프로그래밍 공부/백준 문제풀기
[백준] 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')