https://www.acmicpc.net/problem/17298
1. 난이도 골드 4
2. 문제 해결 방법
시간초과, 메모리초과 난사로 멸망당하고 구글링을 해서 풀었다.
answer이라는 배열을 -1로 모두 저장해놓은 후,
stack에 값이 있고, num[index] > stack[top] 인 경우 인덱스를 이용해 정답 배열에 오큰수를 저장한다.
위의 과정이 끝나면
현재 인덱스를 스택에 저장하고 다음 인덱스로 넘어간다.
import sys
input = sys.stdin.readline
n = int(input().rstrip())
num = list(map(int, input().rstrip().split()))
answer = [-1] * n
stack = []
for i in range(n):
while stack and num[stack[-1]] < num[i]:
answer[stack.pop()] = num[i]
stack.append(i)
for i in answer[:-1]:
print(i, end=" ")
print(answer[-1])
'🔅코딩테스트 공부🔅 > ❗백준' 카테고리의 다른 글
[백준] 18352번 특정 거리의 도시 찾기(python) (0) | 2023.03.20 |
---|---|
[백준] 1377번 버블 소트(python) (1) | 2023.03.08 |
[백준] 11003 최솟값 찾기(python) (0) | 2023.03.06 |
[백준] 12891번 DNA 비밀번호(python) (0) | 2023.03.05 |
[백준] 1005번 ACM Craft(python) (0) | 2023.03.04 |
댓글