-
백준 1874 스택 수열(파이썬)백준 문제풀이 2022. 8. 23. 19:09
import sys n=int(input()) count=0 stack=[] result=[] result2=True for i in range(n): x=int(input()) while count<x: count+=1 stack.append(count) result.append('+') if stack[-1]==x: stack.pop() result.append('-') else: result2=False continue if result2==True: print('\n'.join(result)) else: print('NO')의외로 별거 아닌거 같은데 어려웠다.
핵심은 stack의 맨 끝부분(가장 최근에 들어온 요소)가 x값과 다르면 수열을 생성할 수 없다.
또한 result2==True 부분에서 continue는 오류가 생겼을시에 다음 반복문을 다시 호출해서 상관없지만, break문을 사용하면 문제가 생긴 부분에서 바로 함수를 종료하므로 사용해서는 안된다.
구조는
1 2 3 4 ++
1 2 3 - (4)
1 2 - (3)
1 2 5 6 ++
1 2 5 - (6)
1 2 5 7 8 ++
1 2 5 7 - (8)
1 2 5 - (7)
1 2 - (5)
1 - (2)
- (1)
1 2 5 3 4
이런식이고, No가 나오는 구조는
1 +
- (1)
2 +
- (2)
3 4 5 +++
3 4 _ (5)
여기서 x값은 3인데 stack[-1]이 4이므로 수열 생성이 안된다.
'백준 문제풀이' 카테고리의 다른 글
1966 프린터 큐(파이썬) (0) 2022.08.28 11866 요세푸스 문제(파이썬) (0) 2022.08.24 백준 4949 균형잡힌 세상(파이썬) (0) 2022.08.23 백준 2447 별 찍기 -10(파이썬) (0) 2022.08.19 백준 2630 색종이 만들기(파이썬) (0) 2022.08.16