728x90
BOJ 17298 오큰수
문제
크기가 N인 수열 A = A1, A2, ..., AN이 있다.
수열의 각 원소 Ai에 대해서 오큰수 NGE(i)를 구하려고 한다.
Ai의 오큰수는 오른쪽에 있으면서 Ai보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다.
그러한 수가 없는 경우에 오큰수는 -1이다.
예를 들어, 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이다.
시간 제한 : 1 초
메모리 제한 : 512 MB
입력
첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다.
둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다.
출력
총 N개의 수 NGE(1), NGE(2), ..., NGE(N)을 공백으로 구분해 출력한다.
예제 입력 1
4
3 5 2 7
예제 출력 1
5 7 7 -1
예제 입력 2
4
9 5 4 8
예제 출력 2
-1 8 8 -1
풀이
n = int(input())
a = list(map(int, input().split()))
stack = []
res =[-1] * n
# solution
for i in range(n):
while stack and a[stack[-1]] < a[i]:
res[stack.pop()] = a[i]
stack.append(i)
print(*res)
728x90
'Algorithm(Python) > 스택' 카테고리의 다른 글
[Algorithm] 백준 BOJ 3986 좋은 단어(python 파이썬) (0) | 2022.09.11 |
---|---|
[Algorithm] 백준 BOJ 2493 탑(python 파이썬) (0) | 2022.09.10 |
[Algorithm] 백준 BOJ 10799 쇠막대기(python 파이썬) (0) | 2022.09.08 |
[Algorithm] 백준 BOJ 4949 균형잡힌 세상(python 파이썬) (0) | 2022.09.07 |
[Algorithm] 백준 BOJ 1874 스택 수열(python 파이썬) (0) | 2022.09.06 |