꽤나 고생 좀 했다..
사실 이 문제에는 강력한 힌트가 있었다.
test 케이스 숫자에 해당하는 "모든 정수"가 결국에는 pop이 되어야 했던 것.
이 사실을 늦게 알아서... 많이 고생했다. ㅋㅋㅋ
이 점을 적용하면 코드는 아래와 같이 간단해진다!
import sys
input = sys.stdin.readline # 시간 초과 error를 해결하기 위한 input함수 재정의
last_in = 1
result = []
num_list = []
FLAG = True
T = int(input()) # 테스트 케이스 개수를 입력
for _ in range(T): # 테스트 케이스 개수만큼 반복
num = int(input()) # 정수 입력
while last_in <= num: # 마지막 입력된 정수가 num이 될 때까지 반복
num_list.append(last_in) # 정수를 stack에 저장
# print("input >>>", last_in)
result.append('+') # stack에 쌓으므로 '+' 저장
last_in += 1 # 입력할 정수가 다음 숫자로 넘어감
# print(last_in)
# while num in num_list:
if num_list[-1] == num: # 내려올 때는 무조건 한 칸씩 내려와야 함
result.append('-') # pop이므로 '-' 저장
num_list.pop() # 마지막 값 pop
# print("out >>>", last_out)
else: # 여러 칸 내려온다면?
FLAG = False # 불가능!
break # for문 종료
if FLAG:
for value in result:
print(value)
else:
print('NO')
'Algorithm Test > BaekJoon' 카테고리의 다른 글
BaekJoon 10845 - 큐 (Python) (0) | 2022.02.28 |
---|---|
BaekJoon 1406 - 에디터 (Python) (0) | 2022.02.25 |
BaekJoon 9012 - 괄호 (0) | 2022.02.23 |
BaekJoon 9093 - 단어 뒤집기 (0) | 2022.02.22 |
BaekJoon 10828 - 스택 (0) | 2022.02.21 |