이분 탐색 문제에 대해 익히려고 풀어본 문제.
"최소" 시간을 찾는다고 했으니, start와 end 를 반씩 줄여가면서 해당 시간 안에 모든 사람이 통과할 수 있는 경우를 찾았다!
class Solution {
public long solution(int n, int[] times) {
long answer = 0;
long start = 0;
long end = 1000000000L * 1000000000L;
while(end>start){
long minute = (start+end)/2;
if(check(times, minute, n)){
end = minute;
} else {
start = minute + 1;
}
}
return start;
}
static boolean check(int[] times, long minute, int n){
long count = 0;
for(int time: times){
count += minute/time;
}
return count >= n;
}
}'코딩테스트 연습 > programmers' 카테고리의 다른 글
| [프로그래머스] 년, 월, 성별 별 상품 구매 회원 수 구하기 - MYSQL (0) | 2025.10.21 |
|---|---|
| [프로그래머스] 식품분류별 가장 비싼 식품의 정보 조회하기 - MYSQL (0) | 2025.10.20 |
| [프로그래머스] 여행경로 - JAVA (0) | 2025.10.19 |
| [프로그래머스] 저자 별 카테고리 별 매출액 집계하기 - MYSQL (0) | 2025.10.19 |
| [프로그래머스] 조건에 맞는 사용자와 총 거래금액 조회하기 - MYSQL (0) | 2025.10.19 |