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
Carnegie Mellon University Robotics Institute | Research Associate | Developing For Our Lives, 세상에 기여하는 삶을 살고자 개발하고 있습니다

0개의 댓글

관련 채용 정보