99클럽 코테 스터디 3일차 TIL - 프로그래머스[입국심사]

박예슬·2024년 10월 30일
0

99club-study

목록 보기
3/33


문제 풀이

오늘의 문제 - 프로그래머스[입국심사]

나의 풀이

import java.util.*;

class Solution {
    public long solution(int n, int[] times) {
        Arrays.sort(times);
        long start = 0;
        long end = (long) times[0] * (long) n;
        
        while(start <= end) {
            long mid = (start + end) / 2,
                 humans = 0;
            
            for(int i = 0; i < times.length; i++) humans += mid / times[i];
            
            if(humans >= n) end = mid - 1;
            else start = mid + 1;
        }

        return start;
    }
}

해결과정

  1. 루프돌리기, 한 심사위원만 사용하여 최소시간으로 끝낼수 있는 경우 배열 sorting
  2. 최대값으로 한 심사위원만 사용하여 최소시간으로 끝낼수 있는 경우 대입
  3. 이분탐색 시도 중간값, 해당시간때 발생할수 있는 사람수 변수 선언
  4. 시간때별로 발생할수 있는 사람 경우 변수 대입
  5. 최소값, 최대값 범위차이 끝까지 줄이기
  6. 이분탐색이 더 불가한경우에 반환

오늘 배운 점

이분 탐색을 할 때는

  1. 내가 찾아야 할 정답의 범위를 left ~ right로 정한다.
  2. 정답을 mid로 간주한 후, 해당 정답이 유효한지 살펴본다.
  3. 2번 여부를 따지며 left와 right의 범위를 좁힌다.
  4. left > right가 되면 반복을 끝내고 답을 반환한다.

import 를 까먹지말자

  • java로 코테를 하는게 처음이라, import 를 하지 않아서 자꾸 런타임 오류가 났는데 원인을 몰라 헤맸다.
profile
공부중인 개발자

0개의 댓글