반응형
반응형
문제 주소 백준 17725번 트리의 부모 찾기 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 알고리즘 트리 힌트 주어진 입력대로 노드들을 양방향으로 연결하고 1을 루트로 트리를 재구성한다. 문제풀이 1에서 출발하여 BFS로 각 노드의 부모를 찾는다. n = int(input()) tree = [[] for i in range(n+1)] for i in range(n-1): a,b=list(map(int,input().split())) tree[a].append(b) tree[b].append(a) q = [1] ans= {} check = [False for i in ra..
문제 주소 백준 1991번 트리 순회 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1≤N≤26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 영문자 www.acmicpc.net 알고리즘 트리 힌트 전위 순회(preorder) 노드를 방문한다. 왼쪽 서브 트리를 전위 순회한다. 오른쪽 서브 트리를 전위 순회한다. 중위 순회(Inorder) 왼쪽 서브 트리를 중위 순회한다. 노드를 방문한다. 오른쪽 서브 트리를 중위 순회한다. 후위 순회(postorder) 왼쪽 서브 트리를 후위 순회한다. 오른쪽 서브 트리를 후위 순회한다. 노드를 방문한다. 문제풀이 파이썬의 딕셔너리를 이용하여 트리를 구현할 수..
문제 출처 한국정보올림피아드 지역본선 2015 중등부 2번 한국정보올림피아드 지역본선 2015 초등부 3번 문제 주소 백준 10799번 쇠막대기 코드업 4833 : 쇠막대기 알고리즘 스택 힌트 레이저가 있는 위치에 막대기가 몇 개 있는지 알면 계산할 수 있다. 문제풀이 class ArrayStack: def __init__(self): self.data = [] def size(self): return len(self.data) def isEmpty(self): return self.size() == 0 def push(self, item): self.data.append(item) def pop(self): if self.isEmpty() is not True: return self.data.pop()..
문제 출처 Northwestern European Regional Contest NWERC 2006 F번 문제 주소 백준 1966번 프린터 큐 1966번: 프린터 큐 문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료�� www.acmicpc.net 알고리즘 큐 문제풀이 큐 구현부 class ArrayQueue: def __init__(self): self.data = [] def size(self): return len(self.data) def isEmpty(self): return self.size()==0 def enqueue(self, item): self...
문제 출처 ICPC Regionals Asia Pacific Korea Daejeon Nationalwide Internet Competition 2016 L번 문제 주소 백준 13335번 트럭 13335번: 트럭 문제 강을 가로지르는 하나의 차선으로 된 다리가 하나 있다. 이 다리를 n 개의 트럭이 건너가려고 한다. 트럭의 순서는 바꿀 수 없으며, 트럭의 무게는 서로 같지 않을 수 있다. 다리 위에는 단�� www.acmicpc.net 알고리즘 Queue 힌트 다리가 무게가 0인 트럭들로 꽉 차있다고 생각하고 문제를 푼다 문제풀이 truck큐와 bridge큐를 만들어서 다리 위에 있는 트럭들과 대기중인 트럭들을 관리한다. class ArrayQueue: def __init__(self): self.da..
문제 주소 Fun Game 힌트 입력 데이터 리스트와 그 reverse한 리스트를 비교하면된다. 풀이 스택 구현부 class ArrayStack: def __init__(self): self.data = [] def size(self): return len(self.data) def isEmpty(self): return self.size() == 0 def push(self, item): self.data.append(item) def pop(self): if self.isEmpty() is not True: return self.data.pop() def peek(self): if self.isEmpty() is not True: return self.data[-1] else: print("Stack..