[알고리즘] 백준 - 오큰수

June·2021년 2월 14일
0

알고리즘

목록 보기
80/260

백준 - 오큰수

내 풀이

N = int(input())
arr = list(map(int, input().split()))

ans = [-1] * len(arr)
stack = []

for i in range(len(arr)):
    while stack and arr[i] > arr[stack[-1]]:
        ans[stack.pop()] = arr[i]
    stack.append(i)

print(' '.join(list(map(str, ans))))

백준 - 탑
리트코드 - 빗물 트래핑
과 근본적으로 비슷한 문제이다.

스택에 인덱스를 저장하고, for loop을 돌며, 해당 값이 stack의 값보다 크면 스택을 비워내며, 값을 저장하는 방식이다.

0개의 댓글