BAEKJOON #17298 오큰수
2021. 5. 4. 11:35ㆍ개발노트
이 문제의 저작권은 BAEKJOON에 있습니다.
https://www.acmicpc.net/problem/17298
풀이
- n크기 만큼의 -1 리스트를 생성
- for문으로 n만큼 반복
- stack이 존재하고 arr[stack[-1]] < arr[i] 일때 while문 실행
- stack의 마지막 요소를 pop하고 answer인덱스로 사용, arr[i]값을 삽입
- stack에 현재 i값(인덱스)를 삽입
- stack이 존재하고 arr[stack[-1]] < arr[i] 일때 while문 실행
# 오큰수
# https://www.acmicpc.net/problem/17298
from collections import deque
n = int(input())
arr = list(map(int, input().split()))
stack = []
# 미리 -1 리스트 생성
answer = [-1 for i in range(n)]
for i in range(n):
# stack이 존재하고 stack의 맨 마지막 값을 index로 하는
# arr보다 arr[i]가 크다면 조건 성립
while stack and arr[stack[-1]] < arr[i]:
# answer[stack.pop()] 으로 stack값을 pop하며
# 해당 index에 arr[i]값을 삽입
answer[stack.pop()] = arr[i]
# stack에는 index값을 삽입한다.
stack.append(i)
print(*answer)