[백준] 2957 이진 탐색 트리 풀이 Java, BST, TreeSet
BST(Binary Search Tree, 이진 탐색 트리) 이진 탐색 트리는 모든 노드가 많아야 2개의 자식 노드를 가지고 있는 트리이고, 각 노드에는 수가 하나씩 쓰여있다. 만약 어떤 노드에 쓰여 있는 수가 X라면, 그 노드의 왼쪽 서브트리에는 X보다 작은 수, 오른쪽 서브트리에는 X보다 큰 수만 저장되어 있어야 한다. 배열의 첫 번째 수를 루트 노드로 놓고, 다른 나머지 수들을 순서대로 삽입하면서 이진 탐색 트리를 만들려고 한다. 즉, 첫 번째 수를 제외한 모든 수에 대해서 insert(X,root)를 실행하는 것과 같다. 이진 탐색 트리에 삽입하는 함수는 다음과 같다. insert(number X, node N) 카운터 C값을 1 증가시킨다 if X가 노드 N에 있는 수보다 작다면 if N의 왼쪽..
2022. 7. 18.
[백준] 15681 트리와 쿼리 풀이 Java
15681번: 트리와 쿼리 트리의 정점의 수 N과 루트의 번호 R, 쿼리의 수 Q가 주어진다. (2 ≤ N ≤ 105, 1 ≤ R ≤ N, 1 ≤ Q ≤ 105) 이어 N-1줄에 걸쳐, U V의 형태로 트리에 속한 간선의 정보가 주어진다. (1 ≤ U, V ≤ N, U ≠ V) www.acmicpc.net 문제 간선에 가중치와 방향성이 없는 임의의 루트 있는 트리가 주어졌을 때, 아래의 쿼리에 답해보도록 하자. 정점 U를 루트로 하는 서브트리에 속한 정점의 수를 출력한다. (*) 메모리 제한 : 128MB (*) 백준 문제 하단에 Tree에 대한 간단한 설명이 있으니 읽어보면 좋음 트리의 정점의 수 N과 루트의 번호 R, 쿼리의 수 Q가 주어진다. (2 ≤ N ≤ 105, 1 ≤ R ≤ N, 1 ≤ Q ..
2022. 7. 15.
[백준] 9095 1,2,3 더하기 풀이 Java
9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 풀이 1,2,3 을 사용하기 때문에 dp[n] = func(n-1)+func(n-2)+func(n-3) 이다. dp 배열은 계속해서 재사용 가능하게 하는데 n은 11보다 작기 때문에 배열의 크기는 11로 선언한다. 함수 내부에서 n보다 작은 경우는 return 0으로..
2022. 7. 14.