문제풀이
1. 입력받을 수의 개수를 받음
2. 원래의 수열을 original_series변수에 리스트 형식으로 저장한다.
3. 10까지 커지는 변수 num 설정. 원래의 수열보다 num이 작은 동안 정렬한 리스트(stack 변수)에 추가해준다.(+ '+'도 출력리스트에 추가해줌)
4. stack의 마지막 요소가 원래의 수열과 같을 때까지 pop()을 실행. (+ '-'도 출력리스트에 추가)
- 여기서 원래 수열이 끝까지 도달했음을 확인하기 위해 original_count 추가 (1씩 더해주는 형태. 정렬의 횟수와 관계없이 원래 수열과 정렬하고 있는 수열이 몇 번째까지 맞았는지를 확인하게 해줌.)
5. 스택이 존재하면 (즉, 정렬되지 않으면) 'NO'를 출력해준다.
6. 스택이 존재하지 않고 완전히 정렬되는 형태면 +, -를 출력한다.
소스코드
import sys
input = sys.stdin.readline
N = int(input())
stack = []
series = []
original_series = []
p_m_list = []
original_count = 0
num = 1
for n in range(1, N+1):
original_series.append(int(input()))
while num <= N:
stack.append(num)
p_m_list.append("+")
num += 1
try:
while stack[-1] == original_series[original_count]:
series.append(stack.pop())
p_m_list.append("-")
original_count += 1
except:
pass
if stack:
print("NO")
else :
for i in range(len(p_m_list)):
print(p_m_list[i])
'Koala - 15기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/Python] 18406번: 럭키 스트레이트 (0) | 2024.08.03 |
---|---|
[백준/Python] 11179번: 2진수 뒤집기 (0) | 2024.07.29 |
[백준/Python] 11068번 : 회문인 수 (0) | 2024.07.28 |
[BOJ/Python3] 2630번 색종이 만들기 (0) | 2024.07.28 |
[백준/Python] 4949번 : 균형잡힌 세상 (0) | 2024.07.28 |