반응형
문제
https://www.acmicpc.net/problem/1874
코드
import sys
input = sys.stdin.readline
n= int(input())
stack = []
ans = []
check = 0
cur_num = 1
for _ in range(n):
num = int(input())
while cur_num <= num:
stack.append(cur_num)
ans.append("+")
cur_num += 1
if stack[-1] == num:
stack.pop()
ans.append("-")
else:
print("NO")
check = 1
break
if check == 0:
for i in ans:
print(i)
설명
수를 쌓아둘 stack과 답을 넣을 ans 리스트를 따로 만들어준다.
n의 횟수만큼 수를 입력하는데,
만약 cur_num이 입력한 수보다 작다면 stack에 수들을 넣어주고,
ans에는 +를 넣어준다.
만약 stack의 마지막 수가 입력한 수와 같다면 stack에서 빼주고,
ans에는 -를 넣어준다.
만약 두 경우에 모두 해당되지 않는다면, 완성할 수 없으므로
NO를 출력해 준다.
반복문을 다 통과했을 경우 답을 출력한다.
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python] 백준 11866: 요세푸스 문제 0 (0) | 2023.03.14 |
---|---|
[파이썬, Python] 백준 2164: 카드2 (0) | 2023.03.10 |
[파이썬, Python] 백준 4949: 균형잡힌 세상 (0) | 2023.03.08 |
[파이썬, Python] 백준 9012: 괄호 (0) | 2023.03.07 |
[파이썬, Python] 백준 10773: 제로 (0) | 2023.03.06 |