코딩테스트/Python
[Python] 백준 #17298 - 오큰수
yo~og
2022. 5. 16. 01:33
문제
https://www.acmicpc.net/problem/17298
17298번: 오큰수
첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다.
www.acmicpc.net
풀이
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에 답을 넣어준다.