본문 바로가기
공부/알고리즘

[알고리즘][백준] 17298번 오큰수 - 파이썬(python) 풀이

by 무명오리 2024. 2. 25.

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

17298번 오큰수

 


풀다가 시간초과가 떠서 다른 분들의 코드를 참고하면서 이해했다.

역시 나는 쓰면서 해야 머리가 돌아간다....😂

 

 

풀이 코드

import sys

n = int(sys.stdin.readline())

number = list(map(int, sys.stdin.readline().split()))
stack = []  # index
result = [-1] * n

for i in range(n):
    # 스택이 비어있지 않음
    # number[3] > number[2] --> number[3] > number[1] 순으로 진행
    while stack and number[i] > number[stack[-1]]:
        result[stack.pop()] = number[i]
       
    stack.append(i)

print(*result)