본문 바로가기

백준8

[백준] 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.
[백준] 2637 장난감 조립 풀이 Java, 위상 정렬 2637번: 장난감 조립 첫째 줄에는 자연수 N(3 ≤ N ≤ 100)이 주어지는데, 1부터 N-1까지는 기본 부품이나 중간 부품의 번호를 나타내고, N은 완제품의 번호를 나타낸다. 그리고 그 다음 줄에는 자연수 M(3 ≤ M ≤ 100)이 주 www.acmicpc.net ★ 위상 정렬(Topological Sort)을 잘 모르면 아래 게시글을 보고 오는걸 추천드립니다. 위상 정렬(Topological sort) BFS,DFS 비순환 방향 그래프 DAG (Directed Acyclic Graph) 사이클이 없는 방향 그래프 위상 정렬(Topological sort) 모든 간선(u,v)에 대해 먼저 오는 정점 순서로 정렬이 된다. (u가 v보다 먼저 오면 u->v) 그래프가 DA.. sunrise-min... 2022. 7. 18.
[백준] 2252 줄 세우기 풀이 Java, 위상 정렬 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net ★ 위상 정렬(Topological Sort)를 잘 모르면 아래 게시글을 보고 오는걸 추천드립니다. 위상 정렬(Topological sort) BFS,DFS 비순환 방향 그래프 DAG (Directed Acyclic Graph) 사이클이 없는 방향 그래프 위상 정렬(Topological sort) 모든 간선(u,v)에 대해 먼저 오는 정점 순서로 정렬이 된다. (u가 v보다 먼저 오면 u->v) 그래프가 DA.. sun.. 2022. 7. 17.
[백준] 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.
[백준] 1463 1로 만들기 풀이 Java 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net DP 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 풀이 제출 했을 때 100%에서 틀렸다고 떠서 뭘 잘못했나 했더니 1일때 답은 0이라는 것을 놓쳤었다. 아래 코드를 보면 조건만 맞는다면 i-1, i%3, i%2에 대해서 모두 검사하게 되어있다. 그 이유는 아래와 같이 n=10 일 때, 다양하게 갈라질 수 있기 때문에 가장.. 2022. 7. 14.
[백준] 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.
반응형