# Coding/# 백준
[백준 / 17298] 오큰수 - Python
강현들
2022. 2. 22. 14:52
728x90
반응형
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
<풀이>
시간 초과를 줄이기 위해서 deque를 사용했더니 통과했다.
오른쪽에 있는 큰 수를 찾아야 하므로 뒤에서부터 탐색을 해주었다.
<전체 코드>
from collections import deque
N = int(input())
arr = list(map(int, input().split()))
mostBigNum = -1
O_arr = deque()
answer = deque()
for i in arr[::-1]:
if i >= mostBigNum:
O_arr = deque([i])
answer.appendleft(-1)
mostBigNum = i
else:
while True:
now = O_arr[0]
if i < now:
answer.appendleft(O_arr[0])
O_arr.appendleft(i)
break
else:
O_arr.popleft()
print(' '.join(list(map(str, answer))))
728x90
반응형