티스토리 뷰
https://www.acmicpc.net/problem/1874
👩💻문제 이해
위에 있는 숫자들을 무시한 채 밑에 깔린 숫자를 먼저 출력하는 것은 불가능하기 때문에 가장 위쪽의 숫자(TOP)가 입력된 숫자와 같지 않을 경우 스택을 만들 수 없다. 따라서 반복문 안에서 li.pop() != int(input()) 일 경우 -> NO 출력!
👩💻재귀함수를 사용한 코드 : 성공🌈
# 1874번 : 스택 수열
n = int(input())
li = []
for i in range(n):
li.append(int(input()))
add = 1
empty = []
res = []
can = 0
for i in range(n):
while add <= li[i]:
empty.append(add)
res.append('+')
add += 1
if empty[-1] == li[i]:
res.append('-')
empty.pop()
else:
print('NO')
can = 1
break;
if can == 0:
for i in range(len(res)):
print(res[i])
# 1874번 : 스택 수열
n = int(input())
li = []
# 입력 숫자들을 넣을 list
for i in range(n):
li.append(int(input()))
add = 1
empty = []
res = []
can = 0
for i in range(n):
while add <= li[i]:
# empty리스트에 추가할 숫자가 입력받은 숫자리스트의 숫자와 같을 때까지
empty.append(add)
res.append('+')
add += 1
# empty 리스트에 숫자 add를 추가 하고 결과값 list에 부호'+' 추가
if empty[-1] == li[i]:
res.append('-')
empty.pop()
# empty 리스트의 TOP과 현재 list의 숫자가 같을 경우 pop
else:
print('NO')
can = 1
break;
# empty 리스트의 TOP과 현재 list의 숫자가 같지 않을 경우 stack을 만들 수 없다.
if can == 0:
for i in range(len(res)):
print(res[i])
✨Point✨
stack 구조에서는 가장 위쪽의 숫자를 pop 하지 않고 밑에 있는 숫자를 꺼낼 수 없다.
'🦖 Programming > Python' 카테고리의 다른 글
[Python] 백준 알고리즘 10845번 : 큐 (0) | 2022.09.27 |
---|---|
[Python] 백준 알고리즘 4889번 : 안정적인 문자열 (0) | 2022.09.23 |
[Python] 백준 알고리즘 10994번 : 별 찍기 - 19 (1) | 2022.09.21 |
[Python] ⭐️백준 알고리즘 11729번 : 하노이 탑 이동 순서 (0) | 2022.09.20 |
[Python] 백준 알고리즘 2805번 : 나무 자르기 (0) | 2022.09.20 |
댓글