For Programmer

백준 17298번 파이썬 문제풀이(오큰수) 본문

코팅테스트/백준 문제 모음

백준 17298번 파이썬 문제풀이(오큰수)

유지광이 2022. 5. 15. 20:59
728x90

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())
arr = list(map(int, input().split()))

ans = [-1] * N  # 초기 정답을 -1로 설정
stack = [0]  # 첫 인덱스 0을 넣어준다.
for i in range(1, N):
    # 만약 스택의 마지막 인덱스의 arr값이 해당 비교하고자 하는 값보다 작다면
    # 그 값보다 클때까지 해당 값을 오른쪽의 큰 수로 설정해준다.
    while stack and arr[stack[-1]] < arr[i]:
        ans[stack.pop()] = arr[i]
    stack.append(i)  # 해당 인덱스를 무조건 스택에 넣어준다.

print(*ans)

 

728x90
Comments