Python 1874 : 스택 수열 (Stack)

cad·2022년 2월 3일
0

Algorithm

목록 보기
25/33

문제

풀이

  1. 처음에 0 ~ n만큼 배열을 초기화 한다.

  2. point를 하나 두고 주어진 스택 배열에서 값을 빼내면서 point를 움직여 값이 일치하면 pop 시킨다.

  3. point는 현재 쌓여있는 스택과 일치하므로 최상단 스택이 아닌 밑에 있는 값이 불려질 경우 연산이 불가능 하므로 NO를 출력한다.

잡담

  • 다른 코드들에 비해서 너무 느리다.

전체 코드

import sys
r = sys.stdin.readline
n = int(r().rstrip())

arr = list(int(r().rstrip()) for i in range(n))
nums = [int(i) for i in range(n + 1)]
str_arr = []
point = 0

while len(arr) > 0:
    now = arr.pop(0)
    end = nums[point]
    if end < now:
        while nums[point] != now:
            point += 1
            str_arr.append("+")
    elif end > now:
        print("NO")
        break

    nums.pop(point)
    point -= 1
    str_arr.append("-")
else:
    for i in str_arr:
        print(i)
profile
Dare mighty things!

0개의 댓글