본문 바로가기
Algorithm/이분탐색

[프로그래머스 lv 3] 입국심사

by HANNI하니 2023. 2. 6.

사용 언어 - Python3

문제 - 입국심사

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

정답

심사한 수가 n이 될 때의 특정 시간을 찾는 이분탐색 문제

(정답 맞춘 여부 X / 코드 풀이)

어떤 값(mid)을 입국심사에 걸리는 times로 나눈 몫이 총 명수가 되어야 한다. mid//time == n

구하려는 시간을 기준으로 이분탐색을 진행한다.

최소 시간(start)은 min(times), 최대시간(end)은 max(times)*n로, start와 end 중간값인 mid 부터 검사를 시작하면서 mid//time == n 이 될때까지 while 반복문을 진행한다.

# 정답
def solution(n, times):
    answer = 0
    start,end = min(times),max(times)*n
    
    while start<= end:
        people = 0
        mid = (start+end)//2
        
        for time in times:
            people += mid//time
            if people >= n:
                break
                
        if people >= n:
            answer = mid
            end = mid-1
        elif people < n:
            start = mid+1
    
    return answer

 


레퍼런스

  • 정답 참고
 

[프로그래머스] 입국심사 (Python) / 이분탐색

문제 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시

sohee-dev.tistory.com

  • 정답 깃허브
 

GitHub - yyeongeun/codingtest: 코딩테스트 공부

코딩테스트 공부. Contribute to yyeongeun/codingtest development by creating an account on GitHub.

github.com

 

댓글