개발자 톡
연습문제 톡
[HSAT 3회 정기 코딩 인증평가 기출] 교차로
[인증평가 3차 기출] 교차로 문제 질문입니다.
- 등록일
- 2023-03-04 14:41:47
- 조회수
- 477
- 작성자
- winethaysay
안녕하세요.
해당 문제에서 time을 1씩 증가하다가 대기선에 차가 없을 때는 남아있는 큐의 최소 시간인 mini로 업데이트합니다.
그런데 mini의 초기값을 1e9로 하면 오답이 존재하고, int(1e9)로 하면 통과하는데
이유가 무엇일까요?
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
q= [deque() for _ in range(4)]
for i in range(n):
time,alpha = input().split()
q[ord(alpha)-ord("A")].append((int(time),i))
result = [-1]*n
time = -1
is_waiting = [0]*4
while q[0] or q[1] or q[2] or q[3]:
mini = 1e9
for i in range(4):
if q[i]:
mini = min(mini, q[i][0][0])
if q[i][0][0] <= time:
is_waiting[i] = 1
total = sum(is_waiting)
##교착상태
if total == 4:
break
##대기선에 차가 없을 때때
if total == 0:
time = mini
continue
for i in range(4):
if is_waiting[i] and not is_waiting[i-1]:
_,index = q[i].popleft()
result[index] = time
for i in range(4):
is_waiting[i] = 0
time += 1
for res in result:
print(res,end='\n')
#[hsat_3회_정기_코딩_인증평가_기출]_교차로
#python