binary search 3

[Java] 백준 1965번 : 상자넣기

1. 문제 https://www.acmicpc.net/problem/1965 1965번: 상자넣기 정육면체 모양의 상자가 일렬로 늘어서 있다. 상자마다 크기가 주어져 있는데, 앞에 있는 상자의 크기가 뒤에 있는 상자의 크기보다 작으면, 앞에 있는 상자를 뒤에 있는 상자 안에 넣을 수가 www.acmicpc.net 2. 풀이 과정 처음에는 간단하게 (해당 데이터에서 최대 길이) = (해당 데이터보다 작고 앞에 있는 것 중 가장 큰 값) + 1을 해서 이중for문으로 구현했다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public stat..

[Java] 백준 2110번 : 공유기 설치

1. 문제 https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 2. 풀이과정 집의 좌표가 10억이므로, 전체를 둘러보면 시간초과가 발생하므로 이진탐색을 택했다. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; public class Main { public static void main..

재귀함수

1. 재귀함수란? - 함수 내에서 자기 자신을 다시 호출하는 함수 void Recursive(void){ printf("Recursive call\n"); Recursive(); } 2. 관련 문제 1. 피보나치 수열 #include int fibo(int n) { if (n == 1) return 0; if (n == 2) return 1; return fibo(n - 1) + fibo(n - 2); } int main() { int n; scanf("%d", &n); printf("%d\n", fibo(n)); return 0; } 2. 이진탐색 #include int BinarySearch(int* arr, int left, int right, int n) { if (left > right) ret..

CS/자료구조 2021.07.08