<내 코드>
n = int(input())
stack = []
oper = []
cnt = 1
temp = ""
for i in range(n):
num = int(input())
while(cnt <= num):
stack.append(cnt)
oper.append("+")
cnt += 1
if(stack[-1] == num):
stack.pop()
oper.append("-")
else:
temp = False
if(temp == False):
print("NO")
else:
for i in oper:
print(i)
처음에 무슨 문제인지 이해하는데 오래 걸렸다. 이 문제는 입력으로 주어진 수들의 수열을 push, pop으로 만들 수 있는지 확인하는 문제이다. 여기서 중요한 건 '스택 구조'이고 push를 오름차순으로 숫자가 들어간다는 것이다. 따라서 스택의 마지막 수가 비교하려는 입력의 수열의 수와 다르다면 해당 수열을 만들 수 없게 되는 코드다.
'알고리즘 문제풀기 > 백준 - Python' 카테고리의 다른 글
[백준 2164] 카드 2 - Python (0) | 2020.07.25 |
---|---|
[백준 18258] 큐 2 - Python (0) | 2020.07.25 |
[백준 10828] 스택 - Python (0) | 2020.07.24 |
[백준 10814] 나이순 정렬 - Python (0) | 2020.07.22 |
[백준 1181] 단어 정렬 - Python (0) | 2020.07.22 |