언젠가는

(파이썬) Python3 백준 1874번 - 스택 수열 본문

IT/코딩

(파이썬) Python3 백준 1874번 - 스택 수열

new1life 2022. 8. 3. 02:34

1874번 문제

 

import sys
a = int(sys.stdin.readline())
 
좀 더 빠르게 입력값을 얻기 위해 넣습니다.
 
s=[]
push할 때 들어오는 값들을 s=[]에 넣습니다.
 
op=[]
push 일 때 '+'를, pop일 때 '-'를 넣습니다.
 
count=1
문제에서 오름차순으로 들어간다고 했으므로, 처음 push되는 값은 1입니다.
 
er=0
오류가 났을 때 식별자 역할을 해 줄 변수입니다.
 
for i in range(a):
    b = int(sys.stdin.readline())
    while count<=b:
        s.append(count)
        op.append('+')
        count+=1
변수 b에 입력값이 들어오고, b와 count가 같아질때까지 올려가면서 s에 넣어줍니다.
 
    if s[-1] == b:
        s.pop()
        op.append('-')
같아지면 pop을 합니다. pop은 가장 최근의 값을 꺼내옵니다. 최근 값을 다른 list에 넣어 놓는다고 생각하면 됩니다.
 
계속 반복하는데, 다음에 오는 값이 count보다 크게 될 경우에는 실패합니다.
 
    else:
        print("NO")
        er=1
        break
er값을 1로 만들어줍니다. 이것이 없이 아래의 for문을 돌리면 실패한 값의 op안의 값들도 출력이 되기 때문입니다.
 
 
if er==0:
    
    for i in op:
        print(i)
 
er이 0일 때의 값만 가지고 출력합니다.
Comments