[Gold IV] Title: 오큰수, Time: 824 ms, Memory: 149160 KB -BaekjoonHub
This commit is contained in:
30
백준/Gold/17298. 오큰수/README.md
Normal file
30
백준/Gold/17298. 오큰수/README.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# [Gold IV] 오큰수 - 17298
|
||||
|
||||
[문제 링크](https://www.acmicpc.net/problem/17298)
|
||||
|
||||
### 성능 요약
|
||||
|
||||
메모리: 149160 KB, 시간: 824 ms
|
||||
|
||||
### 분류
|
||||
|
||||
자료 구조, 스택
|
||||
|
||||
### 제출 일자
|
||||
|
||||
2025년 11월 13일 23:14:26
|
||||
|
||||
### 문제 설명
|
||||
|
||||
<p>크기가 N인 수열 A = A<sub>1</sub>, A<sub>2</sub>, ..., A<sub>N</sub>이 있다. 수열의 각 원소 A<sub>i</sub>에 대해서 오큰수 NGE(i)를 구하려고 한다. A<sub>i</sub>의 오큰수는 오른쪽에 있으면서 A<sub>i</sub>보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오큰수는 -1이다.</p>
|
||||
|
||||
<p>예를 들어, A = [3, 5, 2, 7]인 경우 NGE(1) = 5, NGE(2) = 7, NGE(3) = 7, NGE(4) = -1이다. A = [9, 5, 4, 8]인 경우에는 NGE(1) = -1, NGE(2) = 8, NGE(3) = 8, NGE(4) = -1이다.</p>
|
||||
|
||||
### 입력
|
||||
|
||||
<p>첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A<sub>1</sub>, A<sub>2</sub>, ..., A<sub>N</sub> (1 ≤ A<sub>i</sub> ≤ 1,000,000)이 주어진다.</p>
|
||||
|
||||
### 출력
|
||||
|
||||
<p>총 N개의 수 NGE(1), NGE(2), ..., NGE(N)을 공백으로 구분해 출력한다.</p>
|
||||
|
||||
17
백준/Gold/17298. 오큰수/오큰수.py
Normal file
17
백준/Gold/17298. 오큰수/오큰수.py
Normal file
@@ -0,0 +1,17 @@
|
||||
import sys
|
||||
input = sys.stdin.readline
|
||||
|
||||
n = int(input())
|
||||
li = list(map(int, input().split()))
|
||||
stack = []
|
||||
ans = [0] * n
|
||||
|
||||
for i in range(n):
|
||||
while stack and li[stack[-1]] < li[i]:
|
||||
ans[stack.pop()] = li[i]
|
||||
stack.append(i)
|
||||
|
||||
while stack:
|
||||
ans[stack.pop()] = -1
|
||||
|
||||
print(" ".join(map(str, ans)))
|
||||
Reference in New Issue
Block a user