1874 : 스택수열

서희찬·2021년 11월 30일
0

백준

목록 보기
77/105

문제

코드

n = int(input())
stack1 = []
result = []

flag = True 

cnt = 1
for _ in range(n):
    num = int(input())
    while(cnt<=num): #1부터 붙여 
        stack1.append(cnt)
        result.append('+')
        cnt+=1
    if stack1[-1] == num:#스택의 끝부분이 입력받는 수라면 
        stack1.pop() #팝팝 
        result.append('-')
    else :
        flag = False 
if(flag==False):
    print("NO")
else :
    for results in result:
        print(results)

해설

문제....이해하기가....어려웠따리...
하지만 문제를 자세히보면
내가 입력하는것은 "수열"이고
"스택"에는 1부터 N까지의 숫자를 넣는것인데
넣는 과정에 내가 입력한 수열을 만들 수 있게 스택에 있는 숫자를 빼는 것이다.
그래서 처음에 4를 입력했으니 그 이전까진 푸쉬를 반복문 안에서 하다가 반복문 탈출하고 스택의 제일 마지막요소와 내가입력한 수가 동일하다면 팝을 실행하는것이다.
그렇게 반복해나가는 것인데, 만약 마지막요소가 내가입력한 숫자가 아니라면 수열 생성이 불가능한 케이스 이므로 flag를 변경해주고 No를 출력하게 한다

profile
부족한 실력을 엉덩이 힘으로 채워나가는 개발자 서희찬입니다 :)

0개의 댓글