728x90
반응형
문제 요약
재민이는 재현이가 부르는 숫자를 받아 적는다.
재현이가 숫자를 잘못 부를 경우 0을 외쳐 가장 최근에 재민이가 받아 쓴 수를 지우게 한다.
모든 수를 받아 적은 후, 그 수의 합을 출력하는 프로그램을 작성하라.
입력
첫 번째 줄에 정수 K (1 <= K <= 100,000) 입력
이후 K개의 줄에 정수 1개씩 입력
(정수는 0이상 1,000,000 이하의 값. 0일 경우 가장 최근에 쓴 수를 지우고, 아닐 경우 해당 수를 입력)
정수가 0일 경우 지울 수 있는 수가 있음을 보장
출력
최종적으로 적어 낸 수의 합 출력
합은 2^31-1보다 작거나 같은 정수
입출력 예시
입력 | 출력 |
4 3 0 4 0 |
0 |
10 1 3 5 4 0 0 7 0 0 6 |
7 |
코드
처음으로 PyPy3 속도가 빠르다는걸 체감하는 결과. 확실히 메모리는 많이 잡아먹지만 속도 차이가 심하다.
N = int(input())
S = []
result = []
for _ in range(N):
S.append(int(input()))
for i in S:
if i == 0 and len(S) != 0:
result.pop()
elif i != 0:
result.append(i)
print(sum(result))
피드백
문제는 쉬웠는데, sys.stdin.readline() 사용해서 입력 받으려다가 10분~15분 가량 소요했다.
그냥 int(input())으로 입력 받음
문제는 list 안에 숫자만 저장하고 싶었는데, 2차원 list로 저장이 되는 것이었다.
항상 readline()으로 int를 입력받으려고 할 때 좀 헤매는 것 같다. 정리해둬야지.
다른 사람 풀이 참고
import sys
N = int(sys.stdin.readline().rstrip())
_list = []
for i in range(N):
tmp = int(sys.stdin.readline().rstrip())
if tmp == 0:
_list.pop()
else:
_list.append(tmp)
print(sum(_list))
- 입력과 동시에 0인지 아닌지 판별해서 pop, push 하도록 구현
- 굳이 list를 두 번 쓸 필요 X
728x90
반응형
'알고리즘' 카테고리의 다른 글
[구현] 백준 1225번 이상한 곱셈 Python 풀이 (0) | 2021.05.10 |
---|---|
[자료구조:스택] 백준 12605번 단어 순서 뒤집기 (0) | 2021.03.03 |
[자료구조] 백준 10828번 스택 Python 풀이 (0) | 2021.03.01 |
[구현] 백준 1100번 하얀 칸 Python 풀이 (0) | 2021.02.25 |
[그리디] 백준 1439번 뒤집기 Python 풀이 (0) | 2021.02.24 |