728x90
0. [c++] 백준 - |
https://www.acmicpc.net/problem/5639
1. 풀이 |
이진검색트리를 활용해서 문제를 풀어보았다.
우선, 이진 검색 트리를 만들어보고, 이를 활용해서 문제를 풀어보았다.
+) 이후에 굳이 트리를 만들지 않고도 문제해결이 가능하여 더 쉬운 방법도 활용해보았다.
입력을 보면 가장 처음 들어온 50을 기준으로 45까지는 왼쪽 트리, 98,54,60은 오른쪽 트리에 속하게 된다.
이런 쪼개기를 확확 해주면 답을 구할 수 있다.
약간 bfs느낌?
2. 소스코드 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include<iostream> #include<algorithm> using namespace std; struct Node { int value, depth; //두 자식 노드의 포인터 Node* left, *right; Node(const int& _value) : value(_value), depth(0), left(NULL), right(NULL) { } void setLeft(Node* newLeft) { left = newLeft;} void setRight(Node* newRight) { right = newRight;} }; Node* insert(Node* root, Node* node) { if (root == NULL) return node; if (node->value < root->value) root->setLeft(insert(root->left, node)); else root->setRight(insert(root->right, node)); return root; } void printNode(Node* node) { if (node->left != NULL) printNode(node->left); if (node->right != NULL) printNode(node->right); printf("%d\n", node->value); } int main() { int temp; Node* Nodes = NULL; while(scanf("%d", &temp) != EOF) { Nodes = insert(Nodes, new Node(temp)); } printNode(Nodes); } | cs |
+)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include <iostream> #include <algorithm> using namespace std; int Arr[10002]; void printNode(const int& left, const int& right) { if (left > right) return; int root = Arr[left]; int last = right; while (Arr[last] > root) last--; //Arr[left]를 부모 노드로 하고 두 가지로 나뉜다. //왼쪽 노드가 되고 printNode(left + 1, last); //오른쪽 노드가 된다. printNode(last + 1, right); //자신은 출력해주자. printf("%d\n", root); } int main() { int temp; int N = 0; while (scanf("%d", &temp) != -1) Arr[N++] = temp; printNode(0, N-1); return 0; } | cs |
3. 참고 |
질문이나 지적 있으시면 댓글로 남겨주세요~
도움 되셨으면 하트 꾹!
'<백준> > |c++| easy' 카테고리의 다른 글
|c++| 백준 10814 - 나이순 정렬 (0) | 2019.07.28 |
---|---|
|c++| 백준 11651 - 좌표 정렬하기 2(정렬) (2) | 2019.07.28 |
[c++] 백준 2588 - 곱셈 (0) | 2019.07.05 |
[c++] 백준 10171 - 고양이(특수한 문자열 출력) (0) | 2019.07.05 |
[c++]백준 10815 - 숫자 카드(이진 탐색) (0) | 2019.07.04 |