Binary Search3 [백준] 1654번: 랜선 자르기 (Java) 💡문제 분석 요약길이가 제각각인 K개의 랜선을 모두 같은 길이로 잘라 N개 이상의 랜선으로 만들 때, 만들 수 있는 최대 랜선의 길이를 구하는 문제이다. (나무 자르기 문제와 유사)시간 제한: 2초메모리 제한: 128MB 💡알고리즘 설계만들 수 있는 최대 랜선의 길이를 구하기 ⇒ 이진 탐색탐색 설정left: 0right: 랜선 길이 중 최대값탐색 수행mid: `left + (right - left) / 2`mid 길이로 만들 수 있는 랜선 개수를 구한다. (`count`)범위 조정count가 N보다 크거가 같으면 → `left = mid + 1`count가 N보다 작으면 → `right = mid - 1` (더 잘게 잘라야 함)left가 right보다 작거나 같은 동안 위 과정을 반복한다.결과값으로 .. 2024. 7. 31. [백준] 2805번: 나무 자르기 (Java) 💡문제 분석 요약나무의 수 N과 상근이가 집에 가져가려고 하는 나무의 길이 M, 나무들의 높이가 주어졌을 때, 적어도 M미터의 나무를 집에 가져가기 위해서 절단기에 설정할 수 있는 높이의 최대값을 구하는 문제이다.시간 제한: 1초메모리 제한: 256MB 💡알고리즘 설계특정 조건을 만족하는 최댓값 구하기 ⇒ 이진탐색탐색 범위left: 가장 작은 나무 길이right: 가장 높은 나무 길이탐색 수행mid: `left + (right - left) / 2`절단기에 mid를 설정했을 때 얻을 수 있는 나무 길이 구하기범위 조정구한 나무 길이가 M보다 크거나 같으면 → 값을 더 높여야 함 → `left = mid + 1`구한 나무 길이가 M보다 작으면 → 값를 더 낮춰야 함 → `right = mid - 1`l.. 2024. 7. 30. [프로그래머스] 입국심사 (Java) 💡문제 분석 요약입국심사를 기다리는 사람 수 n, 각 심사관이 한 명을 심사하는데 걸리는 시간이 담긴 배열 times가 주어질 때, 모든 사람이 심사는 받는데 걸리는 시간의 최솟값을 구하는 문제이다.$1 ≤ n ≤ 1,000,000,000$각 심사관이 한 명을 심사하는데 걸리는 시간(분): $1 ≤ time ≤ 1,000,000,000$심사관: $1≤ t ≤ 100,000$ 💡알고리즘 설계이진탐색을 사용.탐색 범위left(최소시간): 1right(최대시간): `n * max(times)` :가장 오래 걸리는 심사관이 모든 사람을 심사하는 경우탐색 수행mid(중간시간): `left + (right - left) / 2`이 시간동안 모든 심사관들이 심사할 수 있는 인원을 계산한다.범위 조정계산된 인원이 .. 2024. 7. 29. 이전 1 다음 반응형