알고리즘/백준[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
반응형