[문제]
나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다.
재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다.
재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다.
재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다. 재민이를 도와주자!
https://www.acmicpc.net/problem/10773
10773번: 제로
첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경
www.acmicpc.net
🎨 풀이
💡 전체 코드
import sys
k = int(input())
result = []
for _ in range(k):
n = int(sys.stdin.readline())
if n == 0:
del result[-1]
else :
result.append(n)
print(sum(result))
> 핵심 : 0일 때 del
🍦 코드 설명 (실행 순서대로 나열)
# main
k = int(input())
result = []
1. k을 입력받는다.
- k : 입력 횟수
for _ in range(k):
n = int(sys.stdin.readline())
if n == 0:
del result[-1]
else :
result.append(n)
2. n을 입력받는다.
3. 만약 n이 0이라면, result[-1]을 삭제한다.
- result[-1] = result 중 가장 마지막에 있는 원소
4. 만약 아니라면, result에 n을 append한다.
print(sum(result))
5. result의 합을 출력한다.

끝~
⭐ 느낀점
> stack pop으로 하면 시간이 아주 조금 줄어들긴 하더라! 예전에 풀었던 거 보고 알았다. 하하. 그래도 잘 풀었다고 생각한다. 굿굿이다~
'🎲 알고리즘 공부 > 백준' 카테고리의 다른 글
[백준] 2490번 - 윷놀이 (파이썬) (0) | 2022.09.03 |
---|---|
[백준] 2442번 - 별 찍기 5 (파이썬) (0) | 2022.09.02 |
[백준] 11721번 - 열 개씩 끊어 출력하기 (파이썬) (0) | 2022.08.30 |
[백준] 2475번 - 검증수 (파이썬) (0) | 2022.08.29 |
[백준] 1075번 - 나누기 (파이썬) (0) | 2022.08.28 |