본문 바로가기

PS/백준

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

728x90

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

제목 그대로 스택을 사용해서 수열을 구할 수 있냐를 나타내는 문제.

문제 조건에 맞게 구현만 해주었다.

 

여러가지 풀이법이 있겠지만 나는 1~n까지 반복문으로 하나씩 조건을 탐색하며 

+를 해야할지 - 를 해야할지를 if문으로 구획지어주며 문제를 풀었다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import sys
 
input = sys.stdin.readline
 
= int(input())
 
li = []
st = []
result = []
idx = 0
for _ in range(t):
    li.append(int(input()))
 
for i in range(1, t + 1):
    result.append('+')
    if idx < len(li):
        if i == li[idx]:
            result.append('-')
            idx += 1
            while 1:
                if idx < len(li) and st:
                    if st[-1== li[idx]:
                        st.pop()
                        result.append('-')
                        idx += 1
                    else:
                        break
                else:
                    break
        elif i != li[idx]:
            st.append(i)
 
if idx >= len(li):
    for i in range(len(result)):
        print(result[i])
else:
    print("NO")
 
cs

 

728x90