https://www.acmicpc.net/problem/17225
import sys
input=sys.stdin.readline
A,B,N=map(int,input().split())
result_A=[]
result_B=[]
blue_t=0
red_t=0
cnt=1
result=[]
for _ in range(N):
t,who,num=map(str,input().split())
t,num=int(t),int(num)
if who=='B' and blue_t<t:
blue_t=t
if who=='R' and red_t<t:
red_t=t
for _ in range(num):
if who=='B':
result.append(('B',blue_t))
blue_t+=A
if who=='R':
result.append(('R',red_t))
red_t+=B
result.sort(key=lambda x:(x[1],x[0]))
for k in range(1,len(result)+1):
if result[k-1][0]=='B':
result_A.append(k)
else:
result_B.append(k)
print(len(result_A))
print(*result_A)
print(len(result_B))
print(*result_B)
선물가게에서 직원 두명이 각 선물을 포장할 때 그 시뮬레이션을 돌려보는 문제이다. 이 때 우리가 필요한 정보는 각 선물을 포장하기 시작하는 시간과 포장을 끝내는 시간, 그리고 누가 포장했는지 이다. 그렇기에 (선물 주문 시각, 색, 갯수)를 입력받았을 때, 시작 시간을 기준으로 갯수만큼의 선물을 순차적으로 진행시켜놓을 수 있다. 진행 시간을 따로 red_t와 blue_t로 두고 주문 시각보다 진행 시간이 더 진행되었다면 진행 시간을 따르고 주문시각이 진행되어있는 시간보다 후에 온다면 주문시각을 기준으로 하면 된다. 그렇게 해서 우리가 정렬할 때 필요한 정보인 색과 각 선물의 포장 시각만을 저장한 후 정렬해주면 된다. 그런 후 결과값을 두개의 결과로 분리 후 출력해주면 된다.
이렇게 Python로 백준의 "세훈이의 선물가게" 문제를 해결해보았습니다. 코드와 개념 설명을 참고하여 문제를 해결하는 데 도움이 되셨길 바랍니다! 😊