Algorithm/BOJ

[백준] 17298 오큰수 (파이썬 python)

YOONJELLY 2024. 3. 12. 11:35

 

문제 링크

 

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 = []
result = []
for i in range(n - 1, -1, -1):
    num = nums[i]
    while stack and stack[-1] <= num:
        stack.pop()
    if not stack:
        result.append(-1)
    else:
        result.append(stack[-1])
    stack.append(num)
print(' '.join(str(result[i]) for i in range(n - 1, -1, -1)))