프로그래밍 공부/백준 문제풀기

[백준] 1874: 스택 수열 문제풀이 (Python)

sh1256 2022. 9. 23. 18:40
728x90
import sys

#n=int(sys.stdin.readline())
#list=[4,3,6,8,7,5,2,1]
dack=list()
result=list()

dack.append(1)
dack.append(2)
dack.append(3)
dack.append(4)

result.append(dack.pop())
result.append(dack.pop())

dack.append(5)
dack.append(6)

result.append(dack.pop())

dack.append(7)
dack.append(8)

result.append(dack.pop())
result.append(dack.pop())
result.append(dack.pop())
result.append(dack.pop())
result.append(dack.pop())

print(result)
#[4,3,6,8,7,5,2,1] 출력
import sys

n=int(sys.stdin.readline())
goal=list()
sorting=list()
for k in range(n):
    goal.append(int(sys.stdin.readline()))
for k in range(n):
    sorting.append(n-k)

'''
n=5
goal=[1,2,5,3,4]
sorting=[5,4,3,2,1]
'''
dack=list()
result=list()
answer=list()
pop_num=0
push_num=0

while(True):
    #print('dack='+str(dack), ', push_num='+str(push_num))
    #print('result='+str(result),', pop_num='+str(pop_num))
    if len(dack)>0:
        if dack[len(dack)-1]==goal[pop_num]:
            #print('dack과 goal 비교 결좌 :O pop실행')
            result.append(dack.pop())
            pop_num+=1
            answer.append('-')
        else: 
            #print('dack과 goal 비교 결과 :X push실행')
            if len(sorting)==0:
                #print('sorting이 비었습니다. 종료')
                break #마지막 확인 or no출력
            dack.append(sorting.pop())
            push_num+=1
            answer.append('+')
    elif len(dack)==0:
        #print('dack이 비었습니다. push실행')
        if len(sorting)==0:
            #print('sorting이 비었습니다. 종료')
            break #마지막 확인 or no출력
        dack.append(sorting.pop())
        push_num+=1
        answer.append('+')

#print('***result='+str(result))
if goal==result: 
    for i in answer:
        print(i)
else: print('NO')