코드업 2749 피자 가게

전.py / / 2020. 12. 14. 17:28
728x90

https://codeup.kr/problem.php?id=2749

 

피자 가게

첫 줄에는 손님의 총수 $n$($1 <= n <= 100,000$)이 입력되고, 그 다음 $i + 1$번째 줄은 번호가 $i$인 손님이 피자를 주문한 시각 $t$, 주문한 피자 $w$가 입력된다.($0<=t<=200,000$) 단, 불고기 피자는 $b$, 치킨

codeup.kr

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
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기