현제의 현재이야기
[백준/python] 17952 - 과제는 끝나지 않아 본문
첫번째 try:
from collections import deque
n = int(input())
scores = []
time = 0
result = 0
resister = []
for i in range(n):
a = deque(map(int, input().split()))
if a[0] == 1:
if time == 0:
time = a[2] - 1
scores.append(a[1])
if time == 0:
result += scores.pop()
else:
resister.append(time)
time = a[2] - 1
scores.append(a[1])
if time == 0:
result += scores.pop()
else:
if time == 0:
result += scores.pop()
time = resister.pop()
else:
time -= 1
if time == 0:
result += scores.pop()
print(result)
>>시간초과
scores = []
time = []
result = 0
n = int(input())
for _ in range(n):
a = list(map(int, input().split()))
if a[0] == 1:
scores.append(a[1])
time.append(a[2])
time[-1] -= 1
if time[-1] == 0:
result += scores.pop()
time.pop()
else:
if len(time) == 0:
continue
time[-1] -= 1
if time[-1] == 0:
result += scores.pop()
time.pop()
print(result)
파이썬으로는 시간초과나서 파이파이로 했더니 됐다.
| 알고리즘
- 만약 입력받은 리스트 맨 앞 요소가 1이면 스코어하고 시간을 각각 리스트에 넣는다
- 그리고 받은 즉시 시간이 -1 됨으로 -1 한번 해주고
- 그리고 최근에 넣은 과제의 시간이 0이 되면 스코어를 팝하고 결과에 더해준다.
- 만약에 리스트 맨 앞 요소가 0이면
time 이 다 비어있으면 time[-1]에서 오류가 뜨기 때문에 continue문을 넣음
- 최근 time에 -1을 해주고 똑같이 해당 과제를 다 끝내면 점수를 더해주고 시간도 없애줘서 다음 과제의 시간을 처리하게 한다.
'algorithm' 카테고리의 다른 글
[백준/python] 12789 - 도키도키 간식드리미 (0) | 2022.06.29 |
---|---|
[백준/python] 16918 - 봄버맨 (0) | 2022.06.25 |
[백준/python] 2346 -풍선터뜨리기 (0) | 2022.06.25 |
[백준/python] 17827 - 달팽이리스트 (0) | 2022.06.25 |
[백준/python] 11866 - 요세푸스 문제 (0) | 2022.06.25 |
Comments