문제
https://www.acmicpc.net/problem/17298
풀이
import sys
n = int(input())
arr = list(map(int,sys.stdin.readline().strip().split()))
stack = [] # 오큰수를 구하지 못한 인덱스 스택
answer = [-1 for i in range(n)]
stack.append(0)
for i in range(1,n):
while stack and arr[stack[-1]] < arr[i]: # 오큰수를 구하지 못한 수가 오큰수를 구할 때 동안
answer[stack.pop()] = arr[i] # 답 넣기
stack.append(i)
print(*answer)
오큰수를 구하지 못한 인덱스 스택을 만들어 주기 위하여 stack 리스트를 선언한다.
만약 오큰수를 구하지 못한 수가 오큰수를 구하면 스택에서 pop해주고 answer에 답을 넣어준다.
'코딩테스트 > Python' 카테고리의 다른 글
[Python] 백준 #2910 - 빈도 정렬 (0) | 2022.05.16 |
---|---|
[Python] 백준 #3474 - 교수가 된 현우 (0) | 2022.05.16 |
[Python] 백준 #2636 - 치즈 (0) | 2022.05.15 |
[Python] 백준 #14502 - 연구소 (0) | 2022.05.15 |
[Python] 백준 #2583 - 영역 구하기 (0) | 2022.05.15 |