[코딩테스트][백준] 🔥 백준 17225번 "세훈이의 선물가게" 문제: Python으로 완벽 해결하기! 🔥

김상욱·2025년 1월 12일
post-thumbnail

문제 링크

https://www.acmicpc.net/problem/17225

🕒 Python 풀이시간: 20분

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로 백준의 "세훈이의 선물가게" 문제를 해결해보았습니다. 코드와 개념 설명을 참고하여 문제를 해결하는 데 도움이 되셨길 바랍니다! 😊

0개의 댓글