[백준] 1874번
https://www.acmicpc.net/problem/1874
import sys
num = int(input())
stack = []
plus_minus = []
m = 0
n = 0
flag = 0
for i in range(num):
n = int(sys.stdin.readline().strip())
if n > m: #
for j in range(m + 1, n + 1):
plus_minus.append("+")
stack.append(j)
m = n
plus_minus.append("-")
k = stack.pop()
if k != n:
flag = 1
if flag == 0:
for i in plus_minus:
print(i)
else:
print("NO")
핵심은, 하나의 스택(리스트)을 만들고 입력받은 숫자대로 그대로 따라가며 스택을 채우고 빼고를 반복한다.
그러다가 내가 스택에서 pop한 것과 입력받은 값이 맞지 않으면 그때는 NO를 출력.
흠,,, 나즁에 다시 한번 풀어봐야 할 듯.
'개발자 > 알고리즘' 카테고리의 다른 글
[백준] 13300번 (feat. 2차원 배열) (0) | 2022.01.15 |
---|---|
[백준] 3273 (feat. 집합 set) (0) | 2022.01.15 |
[백준] 10808 (feat. 파이썬 문자의 아스키코드) (0) | 2022.01.15 |
[백준] 1406번 (feat. reverse와 reversed의 차이점) (0) | 2022.01.12 |
[백준] 10828번 (feat. input()과 sys.stdin.readline()의 차이) (0) | 2022.01.12 |