알고리즘/백준
[백준 / Python] 17298번 오큰수 | 초코더
cloud_nice
2020. 1. 30. 14:57
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
나의풀이
n = int(input())
nums = list(map(int, input().split()))
stack = []
ans = [-1 for _ in range(n)]
for i in range(len(nums)):
#스택이 비지 않았으면서, 다음수가 해당수보다 크면
while len(stack)!=0 and nums[stack[-1]] < nums[i]:
#ans[(stack.pop()=현재 수에 해당하는 인덱스)]배열에 다음수 집어넣기
ans[stack.pop()] = nums[i]
stack.append(i)
print(*ans)