알고리즘/백준[baekjoon]
[baekjoon] 백준 1874번 : 스택 수열 (by python 파이썬)
코딩하는이씨
2022. 4. 5. 18:10
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
code
n = int(input())
count = 0 #스택에 쌓을 변수
stack = [] #스택 역활
result = [] #출력할 내용 저장
message = True #연산 불가능 판단
for i in range(n):
x = int(input())
while count < x: #만약 입력수보다 스택에 쌓인 변수가 작으면
count += 1
stack.append(count) #스택에 오름차순으로 쌓음
result.append("+") #쌓을때마다 +
if stack[-1] == x: #스택의 끝값이 입력변수와 같으면
stack.pop() #제거후 -출력
result.append("-")
else:
message = False #다르면 연산불가능판단
if message == False:
print("NO")
else:
print("\n".join(result))
입력받은 수보다 작으면 스택에 숫자를 쌓으면서 +를 출력하다
만약 스택 마지막수와 입력변수가 같다면 -를 출력하고 해당 수를 제거하는 방법으로 처리했다.
728x90
반응형