소스 코드

from collections import deque
n = int(input())
res = 0
# []로 선언하면 시간초과 발생
store = deque()
# 현재 진행중인 과제의 점수
score = 0
# 현재 진행중인 과제의 남은 시간
time = 0
for q in range(n):
tmp = input().rstrip()
# 과제가 발생하는 경우
if tmp[0] == '1':
a,b,c = map(int,tmp.split())
# 기존에 진행중이던 과제가 있는 경우
if score != 0:
# 기존에 진행중이던 과제 정보 저장
store.appendleft([score,time])
time = c - 1
if time == 0:
score = 0
res += b
else:
score = b
# 과제가 발생하지 않는 경우
else:
# 기존에 진행중이던 과제가 없는 경우
if score == 0:
# 이 전에 진행하던 과제가 존재하는 경우
if len(store) != 0:
tmp_score, tmp_time = store.popleft()
time = tmp_time - 1
if time == 0:
res += tmp_score
else:
score = tmp_score
# 기존에 진행중이던 과제가 있는 경우
else:
time -= 1
if time == 0:
res += score
score = 0
print(res)

 


해결 방법

1. 구현문제

2. deque와 pypy를 사용


느낀 점

 

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.