[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