[백준] 1874: 스택 수열 (Python)

JiKwang Jeong·2021년 10월 9일
0
post-custom-banner

문제📖

풀이🙏

  • 출력 예시를 보기로 맨 처음 4를 입력하면 stack에는 [1, 2, 3, 4]가 들어간다. 그리고 stack의 맨 위가 4와 같으므로 stack에서 4를 빼내고 다음 입력값을 기다린다. stack = [1, 2, 3]
  • 다음 입력 값 3이 들어오는 경우 count (4) < 3 이므로 while문을 통과하고 stack의 맨 위가 3과 같으므로 stack에서 3을 배내고 다음 입력값을 기다린다. stack = [1, 2]
  • 다음 입력 값 6이 들어오는 경우 count (4) < 6 이므로 stack 에는 [1, 2, 5, 6]이 들어간다. 그리고 stack의 맨위가 6과 같으므로 stack에서 6을 빼내고 다음 값을 기다린다.
  • 다음과 같은 원리를 이용하면 쉽게 구현할 수 있다.

코드💻

import sys
input = sys.stdin.readline
count = 0
stack = []
result = []
tmp = True

for _ in range(int(input())):
    x = int(input())

    while count < x:
        count += 1
        stack.append(count)
        result.append('+')

    if stack[-1] == x:
        stack.pop()
        result.append('-')
    else:
        tmp = False

if tmp == False:
    print('NO')
else:
    for r in result:
        print(r)
    
profile
기억보다 기록, 난리보다 정리
post-custom-banner

0개의 댓글