[Programmers] 입국심사
3538 단어 programmers lv.3TILTIL
출처: 프로그래머스 코딩 테스트 연습
https://programmers.co.kr/learn/courses/30/lessons/43238
이분탐색 (Binary Search Algorithm)
- 정렬이 된 배열에서 탐색범위를 절반으로 줄여 탐색하는 알고리즘
- 왼쪽 끝 인덱스를 start, 오른쪽 끝 인덱스를 end라고 지정하고 중간 인덱스인 mid를 이용
- mid와 target을 비교해서
target<mid
이면 왼쪽 배열에서,target>mid
이면 오른쪽 배열에서target
을 찾을 때까지 탐색 과정 반복- 선형 탐색보다 빠르게 탐색 가능, 시간복잡도는 O(logn)
📝 풀이 (python3)
def solution(n, times):
times.sort()
start = 0
end = n * times[0] # 최대로 걸리는 시간은 심사받는 최소의 시간을 n번 수행하는 경우
while start <= end:
cnt = 0
mid = (start + end) // 2 # mid는 정수여야 하므로 몫으로 지정해줌
for t in times: # 총 걸리는 시간이 mid일 때 심사받는 사람의 수 계산
cnt += (mid // t) # mid를 t로 나눈 몫은 각 심사대에서 심사받는 사람의 수
if cnt > n : # cnt가 n이 되는 mid값을 구하고 싶으므로 효율성을 위해 cnt가 n을 넘으면 break
break
if cnt < n:
start = mid
else:
end = mid
if start + 1 == end:
if cnt < n :
mid += 1
break
return mid
Author And Source
이 문제에 관하여([Programmers] 입국심사), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@puro/Programmers-입국심사저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)