[BOJ / Python] 17298 - 오큰수

신재우·2022년 8월 7일
0

Algorithm

목록 보기
9/11

백준 17298 오큰수

Intro

Solution

  1. 결과를 출력할 리스트를 미리 만들고, -1로 가득 채워 초기화한다.
  2. 주어진 수열의 수를 인덱스와 함께 스택에 저장한다.
  3. 수열을 순회하며 스택의 꼭대기에 있는 수와 비교한다.
  4. 꼭대기의 수가 더 클 경우, 결과 리스트에 그 값을 저장한다.

Code

def solve():
	n = int(input())
	A = list(map(int, input().split()))

	stack = []
	nge = [-1]*n

	for i, a in enumerate(A):
		while stack:
			if stack[-1][1] < a:
				j, _ = stack.pop()
				nge[j] = a
			else:
				break
		stack.append((i, a))

	print(*nge)

solve()

0개의 댓글