본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬]1874번 스택 수열

by 현장 2021. 5. 14.

-코드

s = []
r = []
c = 1
for _ in range(int(input())):
    n = int(input())
    for i in range(n - c + 1):
        s.append(c)
        r.append("+")
        c += 1
    if n == s[-1]:
        s.pop()
        r.append("-")

if len(s) != 0:
    print("NO")
else:
    for i in r:
        print(i)

처음에 문제를 잘 못 이해해서 배열의 길이를 가지고 코드를 짜서 입력의 중간 까지만 출력이 잘 나오고 그 후로는 이상해서 원리를 찾아보니 입력이 8 4 3 6 8 7 5 2 1일 때, 처음 수는 입력받는 수니 제외하고 4 입력 시 리스트에 1 2 3 4가 입력을 받고 자기 자신을 빼주어서 1 2 3이 남고 다음 3 입력하면 자기 자신을 뺘고 1 2가 남고 이런 식으로 진행이 되는 것이었습니다. 그래서 그것을 가지고 해결을 하고 2번째 입출력에 경우 배열의 마지막 값이 n과 같지 않으면 pop과 push가 불가능하므로 배열에 값이 남으면 no라고 출력이 되도록 하였습니다.