백준 문제풀이/자료구조

[백준] 1874 스택수열 - python

peach_h 2023. 1. 27. 14:09

https://www.acmicpc.net/problem/1874

 

1874번: 스택 수열

1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다.

www.acmicpc.net

도대체 뭔소린지 . .

이틀 고민함

입력과 출력이 왜저런지는 알겠다.

근데 이렇게 구현되는 코드를 짜는 건 어케하는지 모르겠다.

그래서 그냥 구글에서 찾아봤다.

 

stack은 오름차순으로 쌓인다는 성질을 이용하면

은근 쉬운 문제였음

 

n = int(input())
stack, ans, find = [], [], True

# 스택의 오름차순 성질 이용, 1부터 시작
now = 1

for i in range(n):
    num = int(input())

    # push
    while now <= num :
        # 스택은 1234 오름차순으로 쌓이기 때문에
        # 앞에 수보다 입력값이 커야 쌓을 수 있음
        stack.append(now)
        ans.append('+')
        now += 1

    # pop
    if stack[-1] == num :
        stack.pop()
        ans.append('-')
    
    # 불가능할 때
    else :
        find = False

if find == False :
    print('NO')
else :
    for i in ans:
        print(i)

약간 알락말락해서 print 다찍어봄

과연 내가 혼자 이 코드를 짤 수 있을까

의문이 드는 문제와 답이였다.

나중에 또 봐도 또 못풀 것같음. .

열심히 이해하려고 노력해보겠다.

'백준 문제풀이 > 자료구조' 카테고리의 다른 글

[백준] 9935 문자열 폭발 - python  (0) 2023.02.13
[백준] 2493 탑 - python  (0) 2023.01.27
[백준] 9012 괄호 -python  (0) 2023.01.27
[백준] 10828 스택 -python  (0) 2023.01.27
[백준] 2164 카드2 -python  (0) 2023.01.27