

각 노드의 부모를 나타내는 문제이다.
1을 매개변수로 받아서 while stack구문으로 해당 노드가 가지는 자식을 가져왔고, 그 자식에 해당 노드를 대입하며 부모 노드를 구하였다.
이러한 문제를 풀 때, 내가 자주 헷갈리는 것은 visited[x] = True의 위치이다.
위 코드도 처음에는 if not visited[i]: 안에 있었다.
그렇다면 왜 if not visited[i]안에 있으면 안되고, 그 위에 있으면 가능한 것인가?
-> visited는 방문 처리를 해주는 것이다. 위 코드에서는 stack에서 pop을 한 후, 방문처리를 하고 이후 작업들을 수행한다.
하지만 if not visited안에서 visited방문 처리를 해주면, 아직 append만 되었고 pop을 하지도 않았는데 방문처리를 하게 되는 샘이다.
이러한 부분이 헷갈리는 이유는 pop이 무엇을 의미하는지, append가 무엇을 의미하는지를 헷갈리고, 정확히 흐름을 이해하고 코드를 짜기 보단 암기된 것을 그대로 복기해서 그런 것 같다.
암기된 내용을 사용하는 것은 좋지만 해당 코드를 써야 하는 이유는 정확히 짚고 넘어가도록 하자.
후기
이 문제는 엄청 쉬운건데 계속 틀렸다.
이유는 문제를 푸는데 급급해서 기본적인 개념과 대충 넘어가는 습관 때문이었다.
시험에서도 dfs,bfs는 거저주는 문제일텐데,, 좀 성급한 학습 패턴인 것 같다.
앞으로 문제를 풀 때 천천히,, 왜 이런지 곱씹으면서,, 하자,,, 컴다운 컴다운,,