728x90
https://codeup.kr/problem.php?id=2749
pizza = {'b':[5,0], 'c':[7,0], 'd':[8,0], 'e':[10,0]} # '피자 종류' :[걸리는 시간, 요리가 끝나는 시간]
n = int(input())
order = []
result = [0]*n # 각 주문마다 (주문 순서, 피자 나오는 시간, 피자 걸리는 시간) 투플 생성
for i in range(n):
time, menu = input().split()
order.append((int(time), menu, pizza[menu][0])) # (주문시간, 피자 종류, 걸리는 시간)
# 주문 들어온 시간 <= 같은 종류의 이전 피자의 요리가 끝난 시간 (요리사가 요리 중인 경우)
# pizza의 요리가 끝나는 시간을 (이전 요리가 끝나는 시간 + 피자 걸리는 시간) 으로 업데이트
if order[i][0] <= pizza[order[i][1]][1]:
result[i] = (i+1, order[i][2] + pizza[order[i][1]][1], order[i][2])
pizza[order[i][1]][1] += (order[i][2])
# 주문 들어온 시간 > 같은 종류의 이전 피자의 요리가 끝난 시간 (요리사가 요리 중이지 않는 경우)
# pizza의 요리가 끝나는 시간을 (주문 들어온 시간 + 피자 걸리는 시간) 으로 업데이트
else:
result[i] = (i+1, order[i][0] + order[i][2], order[i][2])
pizza[order[i][1]][1] = (order[i][0] + order[i][2])
# 끝나는 시간(result[1])이 같은 경우 걸리는 시간(result[2])이 적게 걸리는 순으로 정렬
result = sorted(result, key = lambda i : (i[1],i[2]))
for i in range(n):
print(result[i][0])
반응형
'전.py' 카테고리의 다른 글
백준 1110 더하기 사이클 (0) | 2020.12.14 |
---|---|
백준 1026 보물 (0) | 2020.12.14 |
백준 1835 카드 (0) | 2020.12.14 |
백준 2777 숫자 놀이 (0) | 2020.12.14 |
백준 1085 직사각형에서 탈출 (0) | 2020.12.13 |