Skip to content

Commit f849c44

Browse files
committedDec 13, 2021
chore: 입국 심사/JunghyeonSong.py
1 parent ccabd91 commit f849c44

File tree

1 file changed

+26
-42
lines changed

1 file changed

+26
-42
lines changed
 
+26-42
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,38 @@
1-
import heapq as hq
2-
31
def solution(n, times):
42
answer = 0
3+
left = 1 # 최소 시간
4+
right = n * max(times) # 최대 시간
55

6-
time_heap = list(zip([0]*len(times), times))
7-
hq.heapify(time_heap)
8-
9-
while n:
10-
wait, judge = hq.heappop(time_heap)
11-
n_wait, n_judge = time_heap[0]
12-
13-
# 처리시간 계산
14-
judge_time = total_judge_time(wait, judge, answer)
15-
n_judge_time = total_judge_time(n_wait, n_judge, answer)
16-
17-
# 더 빠른 심사 있으면
18-
if judge_time > n_judge_time:
19-
n_wait, n_judge = hq.heappop(time_heap)
20-
wait, n_wait = n_wait, wait
21-
judge, n_judge = n_judge, judge
22-
hq.heappush(time_heap, (n_wait, n_judge))
23-
24-
n -= 1
25-
hq.heappush(time_heap, (wait+judge, judge))
26-
answer = max(answer, wait+judge)
6+
# 이분탐색
7+
while left < right:
8+
mid = (left + right) // 2
9+
total = 0
2710

11+
# 각 심사위원이 주어진 시간동안 심사할 수 있는 인원 더하기
12+
for time in times:
13+
total += mid // time
2814

29-
return answer
30-
31-
32-
# 심사 대기시간 + 처리시간 구하기
33-
def total_judge_time(wait, judge, answer):
34-
total_time = wait + judge
15+
# 심사할 수 있는 총 인원이 n 이상이면 왼쪽 반 탐색하기
16+
if total >= n:
17+
right = mid
18+
# 심사할 수 있는 총 인원이 n보다 작으면 오른쪽 반 탐색하기
19+
else:
20+
left = mid + 1
3521

36-
if answer % judge:
37-
total_time += judge - answer % judge
22+
answer = left # 최소 시간
3823

39-
return total_time
40-
24+
return answer
4125

4226

4327
'''
4428
정확성 테스트
45-
테스트 1 〉 실패 (0.03ms, 10.3MB)
46-
테스트 2 〉 실패 (1.53ms, 10.2MB)
47-
테스트 3 〉 실패 (10.23ms, 10.3MB)
48-
테스트 4 〉 실패 (239.12ms, 24.7MB)
49-
테스트 5 〉 실패 (891.40ms, 26MB)
50-
테스트 6 〉 실패 (시간 초과)
51-
테스트 7 〉 실패 (시간 초과)
52-
테스트 8 〉 실패 (시간 초과)
53-
테스트 9 〉 실패 (시간 초과)
29+
테스트 1 〉 통과 (0.01ms, 10.2MB)
30+
테스트 2 〉 통과 (0.10ms, 10.2MB)
31+
테스트 3 〉 통과 (3.71ms, 10.2MB)
32+
테스트 4 〉 통과 (276.01ms, 14.2MB)
33+
테스트 5 〉 통과 (414.98ms, 14.3MB)
34+
테스트 6 〉 통과 (332.12ms, 14.3MB)
35+
테스트 7 〉 통과 (546.60ms, 14.2MB)
36+
테스트 8 〉 통과 (517.43ms, 14.3MB)
37+
테스트 9 〉 통과 (0.04ms, 10.3MB)
5438
'''

0 commit comments

Comments
 (0)
Please sign in to comment.