티스토리 뷰
728x90
반응형
문제
코드
n = int(input())
stack = []
result = []
count = 1
boolean = True
for i in range(n):
a = int(input())
while count <= a:
stack.append(count)
result.append('+')
count += 1
if stack[-1] == a:
stack.pop()
result.append('-')
else:
boolean = False
break
if boolean == False:
print('NO')
else:
for i in result:
print(i)
코드설명
1부터 n까지에 수를 스택에 넣었다가 뽑아서 하나의 수열을 만드므로 한번 pop을 해줬던 수는 이미 수열에 들어갔기 때문에 생략해주면 된다.
예제입력1 에서 n에 8이 들어갔기 때문에 1~8까지의 수를 스택에 넣었다가 뽑아서 수열을 만드는 문제이다.
처음값 4가 들어오게 되면 스택에 1,2,3,4를 넣게되고 4를 빼준다.
다음 3이 들어오면 count보다 작아서 while문에 들어가지 않게되고 스택 맨위값과 입력값이 같기 때문에 바로 pop을 해준다.
여기서 만약 스택에 맨위값과 내가 지금 얻고 싶은 입력값 a가 다르다면 false를 준다.
스택은 맨위값부터 차례대로 나가게 되므로 맨위값과 입력값a가 다르다는 뜻은 원하는 값을 얻지못한다는 뜻이다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1011번 Fly me to the Alpha Centauri (Python) (1) | 2021.03.12 |
---|---|
[백준] 2839번 설탕배달 (Python) (0) | 2021.03.12 |
[백준] 1316번 그룹단어체커 (Python) (0) | 2021.03.12 |
[백준] 7576번 토마토 (Python) (0) | 2021.03.11 |
[백준] 11651번 좌표정렬하기2 (Python) (0) | 2021.03.09 |
댓글