https://www.acmicpc.net/problem/1874
#Solution
쉽게 접근하기 위해서 여러 리스트를 만들었다. 1) 정답 리스트 2) 정답과 비교할 리스트 3) 오름차순 리스트 4) 스택 5) 출력(+-)리스트
스택의 LIFO원리를 이용하면 쉽게 만들 수 있다.
numbers = int(input())
answer_list = []
ascending_num_list = []
#먼저 맞는지 확인해야할 answer_list를 생성한다.
for _ in range(numbers):
answer_list.append(int(input()))
#정답리스트와 비교할 compare_list를 생성한다.
ascending_num_list = sorted(answer_list)
stack = []
result = []
compare_list = []
i = 0
for num in ascending_num_list:
if stack and stack[-1] == answer_list[i]:
try:
while stack[-1] == answer_list[i]:
compare_list.append(stack.pop())
result.append('-')
i += 1
except:
stack.append(num)
result.append('+')
continue
stack.append(num)
result.append('+')
for _ in range(len(answer_list) - i):
compare_list.append(stack.pop())
result.append('-')
if answer_list == compare_list:
for i in result:
print(i, end = "\n")
else:
print("NO")
'Programming [Python] > 백준 알고리즘 솔루션' 카테고리의 다른 글
#111 백준 파이썬 [1966] 프린터 큐 (0) | 2019.09.27 |
---|---|
#110 백준 파이썬 [17298] 오큰수 - 스택 (0) | 2019.09.27 |
#108 백준 파이썬 [1655] 가운데를 말해요 - 힙, 우선순위 큐 (0) | 2019.09.27 |
#107 백준 파이썬 [11286] 절댓값 힙 (0) | 2019.09.26 |
#106 백준 파이썬 [1927] 최소 힙 (0) | 2019.09.26 |