사용 언어 - 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
'Algorithm > 이분탐색' 카테고리의 다른 글
[Python3] 백준 1072번 게임 (0) | 2023.04.04 |
---|---|
[프로그래머스 lv 4] 징검다리 (0) | 2023.02.07 |
[백준] 12015번 가장 긴 증가하는 부분 수열 2 (0) | 2023.01.23 |
[백준] 1300번 K번째 수 (0) | 2023.01.21 |
[백준] 2110번 공유기 설치 (0) | 2023.01.21 |
댓글