본문 바로가기

BOJ206

[BOJ]11725번 : 트리의 부모 찾기 (c++) https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 방법 1: dfs #include #include using namespace std; int root = 1; void dfs(vector& tree, vector& parent, int now) { // 현재 노드의 자식 노드 탐색 for (int child : tree[now]) { // 아직 방문하지 않은 parent[자식노드]에 현재노드 저장 후 dfs 재귀함수 호출 if (parent[child] == 0) { parent[child] = now; .. 2020. 5. 31.
[BOJ] 2250번: 트리의 높이와 너비 (c++) https://www.acmicpc.net/problem/2250 2250번: 트리의 높이와 너비첫째 줄에 노드의 개수를 나타내는 정수 N(1 ≤ N ≤ 10,000)이 주어진다. 다음 N개의 줄에는 각 줄마다 노드 번호와 해당 노드의 왼쪽 자식 노드와 오른쪽 자식 노드의 번호가 순서대로 주어진다. ��www.acmicpc.net 중위 순회로 레벨별 최소 인덱스, 최대 인덱스 구하기 --> 최대 차이 구하기#include #include #include #include using namespace std;struct node { int parent, left, right;};struct level { int min, max;};int order = 1;int max_depth;// parent가 0 인 .. 2020. 5. 31.
[BOJ]1991번: 트리 순회 (c++) https://www.acmicpc.net/problem/1991 1991번: 트리 순회첫째 줄에는 이진 트리의 노드의 개수 N(1≤N≤26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 영문자www.acmicpc.net #include #include #include using namespace std;struct node { int left, right;};// 전위 순회 출력void dfs_preorder(vector &tree, int n){ if (n == -1) { return; } cout (n + 'A'); dfs_preorder(tree, tree[n].left); dfs_preorder(tre.. 2020. 5. 31.
[BOJ]13549번 : 숨바꼭질 3 (c++) https://www.acmicpc.net/problem/13549 13549번: 숨바꼭질 3수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 ��www.acmicpc.net 방법 1: bfs 이동횟수 메모이제이션, 덱 사용#include #include #include #include using namespace std;int bfs(int N, int K){ int MAX = K * 2; // 이동횟수를 메모이제이션 할 time 벡터를 최대값으로 초기화 vector time(MAX + 1, numeric_limits::max()).. 2020. 5. 30.