Algorithm Problems

[백준] [Python] 17952번 과제는 끝나지 않아! - 스택

WakaraNai 2021. 5. 23. 14:29
728x90
반응형

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

 

17952번: 과제는 끝나지 않아!

성애는 이번 학기에 전공을 정말 많이 듣는다. 이로 인해 거의 매일을 과제를 하면서 보내고 있다. 그런데도 과제가 줄어들 기미가 보이지 않는데, 바로 분단위로 과제가 추가되고 있기 때문이

www.acmicpc.net

 

 

 

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. 1분짜리 과제
    1. 받자마자 바로 풀이하므로 스택에 넣을 필요 없이 바로 덧셈
  2. 스택에서 넣은 상태에서 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
반응형