문제
N개의 정수들이 입력으로 주어진다.
첫번째 숫자 부터 순서대로 기록하다가, 중간에 0이 나오면 바로 이전에 입력된 숫자를 지운다.
0이 나올때 지울 숫자가 없는 경우는 없다.
최종적으로 기록된 숫자들의 총합을 계산하는 프로그램을 작성하자.
예를 들어, 4 0 2 3 0 이 입력되면
[4] # 4 기록
[] # 0에 의해 4 삭제
[2] # 2 기록
[2, 3] # 3 기록
[2] # 0에 의해 3 삭제
2만 기록된 상태이므로 합은 2가 된다.
반드시 스택을 활용해서 코드를 작성해보자.
입력
첫 줄에 테스트 케이스 수가 주어진다.
각 테스트 케이스 마다 첫줄에 정수의 개수 N이 주어지고 (5 <= N <= 30)
다음 줄에 N개의 정수값(1이상 10이하)들이 공백으로 구분되어, 한 줄에 주어진다.
출력
# 과 함께 테스트 케이스 번호를 출력하고, 최종적으로 적힌 수들의 합을 출력한다.
내가 쓴 코드
T = int(input())
for t in range(T):
N = int(input())
arr = list(map(int, input().split()))
res = []
for a in range(N):
if arr[a] == 0:
res.pop()
else:
res.append(arr[a])
res_sum = 0
for r in res:
res_sum += r
print(f'#{t+1} {res_sum}')
출력 결과
#1 2
#2 3
#3 8
728x90
반응형
'Algorithm > Python' 카테고리의 다른 글
| [BOJ #10798] 세로읽기 (4) | 2024.02.07 |
|---|---|
| [SWEA #12399] 스택1_반복문자_지우기 (1) | 2024.02.07 |
| [BOJ #10951] A+B-4 (1) | 2024.02.06 |
| [BOJ #10950] A+B-3 (3) | 2024.02.06 |
| [BOJ #1110] 더하기 사이클 (1) | 2024.02.06 |