반응형
1. 문제
2. 코드
n = int(input())
n_l = []
stack = []
flag = 0
cnt = 1
for i in range(n):
temp = int(input())
if len(stack) != 0 and stack[len(stack)-1] == temp:
stack.pop()
n_l.append('-')
elif flag == 0:
while 1:
stack.append(cnt)
n_l.append('+')
cnt += 1
if stack[len(stack)-1] == temp :
stack.pop()
n_l.append('-')
break
if cnt > n:
flag = 1
break
if flag == 0:
for i in n_l:
print(i)
else:
print('NO')
3. 풀이
-1) 입력을 한 숫자씩 읽고
(1) stack의 제일 위 숫자가 그 입력과 같으면 pop.
- pop했으면 n_l (+인지 -인지 결과를 담고 있는 리스트)에 -를 담아준다.
(2) 그게 아니면 입력 수가 될 때까지 1부터 차례대로 stack에 append 해주다가 해당 숫자가 stack의 제일 위에 들어오면 pop
- append(push)하면 n_l에 +를 push 해주고
- pop하면 n_l에 -를 push 해준다
-2) 만약 stack에 넣는 수가 입력숫자의 개수보다 커지면 flag(NO를 감지하는)가 1이 된다.
-3) 입력이 끝났을 때도 flag가 0이면 n_l에 있는 결과를 하나씩 출력해주고, 1이면 NO를 출력해준다.
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 17211번 - 좋은 날 싫은 날 (파이썬 python) (0) | 2022.01.03 |
---|---|
[백준] 17210번 - 문문문 (0) | 2022.01.03 |
[백준] 4949 - 균형잡힌 세상 (0) | 2021.12.27 |
[백준] 10828 - 스택 (0) | 2021.12.27 |
[백준] 1158번 - 요세푸스 문제 (0) | 2021.11.15 |