백준 - 1874 (Python) - 스택 수열

4096 단어 algorithmalgorithm

백준 1874

스택 수열

  • 풀이 방법

8 4 3 6 8 7 5 2 1
위와 같이 입력을 받는다고 하자.

n이 8이고 수열 = [4, 3, 6, 8, 7, 5, 2, 1] 이 된다.

우선 스택에 push를 먼저 하면 1이 담긴다.

s = [1]

한번 더 push를 하면 2가 담긴다.

s = [1, 2]

이런식으로 push를 4번해주면

s = [1, 2, 3, 4]가 담긴다.

여기서 입력받은 수열과 같게 하려면 pop을 두번 해주면

[4, 3] 이렇게 담겨진다.

이런식으로 push와 pop을 해가며 pop을 이용해 입력받은 수열([4, 3, 6, 8, 7, 5, 2, 1])을 만드는 것이다.

n = int(input())
stack = []
result = []
count = 1
temp = True
for x in range(n):
    num = int(input())
    while count <= num:
        stack.append(count)
        result.append('+')
        count += 1
    if stack[-1] == num:
        stack.pop()
        result.append('-')
    else:
        temp = False
if temp == False:
    print('NO')
else:
    for x in result:
        print(x)

좋은 웹페이지 즐겨찾기