문제 : https://www.acmicpc.net/problem/1874
스택 자료구조를 활용하여 오름차순 수열을 만드는 문제.
머리가 안 좋아서 문제를 이해 하는 데만 10분은 걸린 듯 하다.
import sys
input = sys.stdin.readline
n = int(input())
cnt = 1
stack = []
result = []
for _ in range(n):
data = int(input())
# 1~입력값까지 오름차순 수열 만들기 **
while( cnt <= data):
stack.append(cnt)
cnt += 1
result.append('+')
# 같으면 뺀다
if stack[-1] == data:
stack.pop()
result.append('-')
else:
print('NO')
exit(0)
print('\n'.join(result))
코드를 보면 입력 값을 하나씩 받게 된다.
-> 한 번에 모든 입력값을 받을 필요는 없다. 천천히 하자
exit()
: 코드를 강제종료 하고 싶을 때 사용
- exit(0)
: 성공적으로 프로그램 종료
- exit(1)
: 성공적으로 프로그램 종료 X
코드에서 exit(0)대신 break문을 사용했다면 NO 이후에 result 스택도 출력 된다. (아래 코드도 실행되버린다)
-> break 문은 반복문만 탈출!, exit()는 아예 프로그램 종료!
입력 받을 때 처음에
input = sys.stdin.readline
을 선언하고 후에 input()
으로 받는 방식도 있다. (가독성도 좋은듯?)