한 걸음씩

[백준][python] 10773 제로 본문

BOJ

[백준][python] 10773 제로

winter17 2023. 1. 26. 23:29

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

 

10773번: 제로

첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경

www.acmicpc.net

풀이 과정

1. 첫 번째 줄에 테스트케이스 값을 for문 range로 바로 입력받고

2. 테스트 케이스 개수만큼 정수를 입력받고 new_num 변수 리스트에 append 한다

3. new_num리스트를 for문 돌리고 

4. 조건문을 통해 i의 값이 0이 아니라면 stack변수에 append 하고

📗 변수명. append(항목) => 리스트 마지막에 항목을 추가해 줌

5. 아니라면 pop (4번에서 1을 추가했을 경우(리스트 내에 1만 있을 경우) 다음에 pop()이 나오면 1을 삭제해 준다는 말)

📗 변수명. pop() => 마지막 항목을 삭제하고 돌려줌

📗 변수명. pop(1) => 리스트에서 1번째 항목을 삭제하고 돌려줌

6. 합을 출력하라고 했으니까 sum함수를 사용한다

new_num = []
for i in range(int(input())):
    num = int(input())
    new_num.append(num)
stack = []
for i in new_num:
    if i != 0:
        stack.append(i)
    else:
        stack.pop()
print(sum(stack))

리뷰

자료구조 stack을 배우고 적용해 본 문제인데 문제 풀 때 pop을 사용해보지 않아서 좀 헷갈렸지만 이해했다