백준 20040 사이클 게임 - 파이썬
문제. 풀이. 유니온 파인드를 이용해서 풀면된다. 우선 생각해야 할게 유니온 연산을 하기전에 파인드 연산을 먼저해서 둘의 루트 노드가 같다면 사이클이 완성된것이다. 예를 들어 parent = [0, 1, 2, 3, 4, 5] 가 있고 이제부터 입력을 받는다고 한다면 0 1이 들어오면 둘의 파인드 연산을 했을때는 각각 루트 노드가 0 , 1이다 둘의 루트 노드가 다르니 유니온 연산을 시행한다 1, 2 입력이 들어오면 둘의 파인드 연산 결과는 0, 2 2, 3 입력이 들어오면 둘의 파인드 연산 결과는 0, 3 0, 3 입력이 들어오면 둘의 파인드 연산 결과는 0, 0 이므로 사이클이 완성됐다. 소스코드.
백준 2263 트리의 순회 - 파이썬
풀이. 다음과 같은 트리가 있다하면 순회의 결과는 다음과 같다. 전위 순회 : 0->1->3->7->8->4->9->10->2->5->11->6 중위 순회 : 7->3->8->1->9->4->10->0->11->5->2->6 후위 순회 : 7->8->3->9->10->4->1->11->5->6->2->0 중위와 후위를 살펴보면, 후위의 마지막 요소가 루트 노드인 것을 알 수 있다. 그러면 중위 순회에서 루트 노드를 기준으로 left, right를 나누면 (7, 3, 8, 1, 9, 4, 10), (11, 5, 2 6)으로 나뉘어진다. 이 left, right의 길이만큼 후위 순회에서 나눈다면 (7, 8, 3, 9, 10, 4 ,1), (11, 5, 6, 2) 로 나뉘어진다 다시 후위 순회와 중위 순회를 ..