입국 심사

최민수·2023년 2월 24일
0

알고리즘

목록 보기
9/94
⭐️
def solution(n, times):
    answer = 0
    
    # Binary Search - 1 ~ worst case
    left, right = 1, max(times) * n
    
    while(left <= right):
        mid = (left + right) // 2
        passed = 0

        # mid 시간동안 지나간 사람 수
        for time in times:
            passed += mid // time
            if passed >= n:
                break
        
        # n보다 더 많은 사람이 지나갔을 경우
        if passed >= n:
            answer = mid
            right = mid - 1
        elif passed < n: # n명보다 더 적게 지나갔을 경우
            left = mid + 1
    
    return answer
  • 처음 문제를 읽고 binary search를 생각해내기 쉽지 않았다.
  • 그러나 n이 생각보다 너무 크다면(10^9) binary search로 풀 수 있는지 먼저 생각해보자.

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

profile
CS, 개발 공부기록 🌱

0개의 댓글