개발자 톡
연습문제 톡
[HSAT 3회 정기 코딩 인증평가 기출] 교차로
인증평가 3차 교차로 반례 문의
- 등록일
- 2022-09-30 15:08:44
- 조회수
- 569
- 작성자
- hhs511
몇일 고민을 해봐도 코드는 제대로 짠것 같은데..
오답이 많네요. 반례 제시 부탁드립니다.
import sys
n = int(input())
cross = []
for i in range(n) :
a, b = input().split()
a = int(a)
b = ord(b) - 65
cross.append([a,b,i]) #time, cross, car_number
cross.sort()
#print(cross)
q = [[],[],[],[]] #A,B,C,D에 대한 Q 생성
t0 = cross[0][0]
c0 = cross[0][1]
n0 = cross[0][2]
q[c0].append(n0)
count_time = t0
index = 1
ans = [-1]*(n+1)
# D > A > B > C > D
# 3 > 0 > 1 > 2 > 3
flag = 0
while q[0] or q[1] or q[2] or q[3] :
#현재 시간 기준 차량 대기
while index < n and count_time == cross[index][0] : #동일한 시간인 경우, q에 append
cross_num = cross[index][1]
car_num = cross[index][2]
q[cross_num].append(car_num)
index += 1
#통행 가능여부 체크
temp = [0] * 4
for i in range(4) :
if not q[(i+3)%4] and q[i] : #A가 비어있으면 B 통행 가능, D가 비어있으면 A 통행 가능
temp[i] = 1
#통행 실시
count = 0
for i in range(4) :
if temp[i] :
car_num = q[i].pop(0)
ans[car_num] = count_time
count += 1
if count == 0 : break #교착상태
count_time += 1
for i in range(n) :
print(ans[i])
#[hsat_3회_정기_코딩_인증평가_기출]_교차로
#python
#교차로
#인증평가3차