728x90
https://www.acmicpc.net/problem/1874
제목 그대로 스택을 사용해서 수열을 구할 수 있냐를 나타내는 문제.
문제 조건에 맞게 구현만 해주었다.
여러가지 풀이법이 있겠지만 나는 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
t = 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
'PS > 백준' 카테고리의 다른 글
[백준 2630번] 색종이 만들기 (파이썬/python) (0) | 2021.06.15 |
---|---|
[백준 2108번] 통계학 (파이썬/python) (0) | 2021.06.15 |
[백준 1010번 ] 다리 놓기 (파이썬/python) (0) | 2021.06.15 |
[백준 4949번 ] 균형잡힌 세상 (파이썬/python) (0) | 2021.06.15 |
[백준 2805번] 나무 자르기 (파이썬/python) (0) | 2021.06.14 |