Skip to content

Commit 76916b0

Browse files
committed
[Gold IV] Title: 오큰수, Time: 468 ms, Memory: 249172 KB -BaekjoonHub
1 parent bf04b68 commit 76916b0

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# [Gold IV] 오큰수 - 17298
2+
3+
[문제 링크](https://www.acmicpc.net/problem/17298)
4+
5+
### 성능 요약
6+
7+
메모리: 249172 KB, 시간: 468 ms
8+
9+
### 분류
10+
11+
자료 구조, 스택
12+
13+
### 제출 일자
14+
15+
2026년 4월 4일 03:00:41
16+
17+
### 문제 설명
18+
19+
<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>
20+
21+
<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>
22+
23+
### 입력
24+
25+
<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>
26+
27+
### 출력
28+
29+
<p>총 N개의 수 NGE(1), NGE(2), ..., NGE(N)을 공백으로 구분해 출력한다.</p>
30+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import sys
2+
input = sys.stdin.readline
3+
4+
N = int(input())
5+
nums = list(map(int, input().split()))
6+
7+
ans = [-1] * N
8+
stack = []
9+
10+
for i in range(N):
11+
while stack and nums[stack[-1]] < nums[i]:
12+
ans[stack.pop()] = nums[i]
13+
stack.append(i)
14+
print(*ans)

0 commit comments

Comments
 (0)