728x90
반응형
https://www.acmicpc.net/problem/17952
Python
stack = []
ans = 0
for _ in range(int(input())):
cmd = list(map(int,input().split()))
if cmd[0] == 1:
if cmd[2] == 1:
ans += cmd[1]
else:
stack.append([cmd[1],cmd[2]-1])
continue
if stack:
stack[-1][1] -= 1
if stack[-1][1] == 0:
x = stack.pop()
ans += x[0]
print(ans)
짧은 풀이
ans에 덧셈하는 경우는
- 1분짜리 과제
- 받자마자 바로 풀이하므로 스택에 넣을 필요 없이 바로 덧셈
- 스택에서 넣은 상태에서 0분이 된 과제
예제 입력 2에 대해 스택과 ans의 변화 상태를 적어보자면,
5
1 10 3
0
1 100 2
1 20 1
0
stack | ans |
[10,2] | 0 |
[10,1] | 0 |
[10,1] [100,1] | 0 |
[10,1] [100,1] | 0+20 <- 1번 경우 |
[10,1] | 0+20+100 <- 2번 경우 |
728x90
반응형
'Algorithm Problems' 카테고리의 다른 글
[백준] [Python] 11047번 동전0 - Greedy (0) | 2021.05.25 |
---|---|
[백준] [Python] 17298번 오큰수 - 스택 (0) | 2021.05.25 |
[백준] [Python] 10799번 쇠막대기 (0) | 2021.05.22 |
[백준] [Python] 2493번 탑 - 스택 - [대표예제] (0) | 2021.05.22 |
[백준] [Python] 14889번 스타트와 링크 (0) | 2021.05.19 |