반응형
알고리즘 분류
- 자료 구조
- 스택
SOLUTION
import sys
A = int(sys.stdin.readline())
num = list(map(int, sys.stdin.readline().split()))
stack = []
ans = [-1 for _ in range(A)]
for i in range(A):
# 스택이 비지 않고 stack의 가장 마지막으로 append 된 인덱스인 num[idx]가 num[i] 보다 작다면
while stack and num[stack[-1]] < num[i]:
# 오큰수 stack을 pop해주면서 해당 idx에 자신보다 가장 큰 왼쪽에 있는 수를 넣어줌
ans[stack.pop()] = num[i]
stack.append(i)
print(*ans)
'코딩테스트 대비 > 단계별 코딩 테스트 준비(27일 과정)' 카테고리의 다른 글
[큐/Python] 2164번: 카드2 - 효과는 굉장했다! (0) | 2022.02.11 |
---|---|
[스택/Python] 4949번: 균형잡힌 세상 - 효과는 굉장했다! (0) | 2022.02.11 |
[정렬/Python] 18870번: 좌표 압축 - 효과는 굉장했다! (0) | 2022.02.11 |
[정렬/Python] 10814번: 나이순 정렬 - 효과는 굉장했다! (0) | 2022.02.11 |
[브루트포스/Python] 1436번: 영화감독 숌 - 효과는 굉장했다! (0) | 2022.02.11 |