백준 1874번 바로가기
나의 풀이#
n = int(input())
stack = []
arr = []
ans = []
i = 1
for _ in range(n):
num = int(input())
arr = [num] + arr
while i <= num:
stack.append(i)
ans.append('+')
i += 1
if stack[-1] == num:
stack.pop()
arr.pop()
ans.append('-')
if stack[::-1] == arr:
print(*ans, sep="\n")
for _ in range(len(stack)):
print('-')
else:
print("NO")
CODE REVIEW#
- 예제를 이해하는 것부터 쉽지 않은 문제였다.
1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써,
부분이 모호해서 헷갈렸는데 차라리 1부터 n까지의 수를 차례대로 넣고 빼는 과정을 반복하면서
표현이 실제 실행 방식에 가깝지 않나 싶긴 하다. 이것도 애매하긴 마찬가지지만…
- input을 받는
arr
, 주어진 수열을 stack
list에 저장해서 비교해가며 문제를 해결했다.
- n까지 넣은 뒤에는 남은 숫자들을 비교했을 때
stack[::-1] == arr
만족하지 않으면 NO, 만족한다면 저장해둔+-
결과를 출력해주면 된다.