https://www.acmicpc.net/problem/17299
import sys
from collections import Counter
input = sys.stdin.readline
N = int(input())
li = list(map(int, input().split(" ")))
count_li = dict(Counter(li))
stack = list()
# 역순으로 반복문
# 스택에 오른쪽부터 하나씩 넣고 비교
dap = list()
for i in range(N-1, -1, -1):
num = len(stack)
while stack:
# 왼쪽에 있는 값부터 비교해서 더 크면 그 값 dap에 추가
if count_li[stack[-1]] > count_li[li[i]]:
dap.append(stack[-1])
stack.append(li[i])
break
else:
# 더 작거나 같으면 pop
stack.pop()
# 스택에 남아있는 수가 없으면 -1
else:
dap.append(-1)
stack.append(li[i])
for i in dap[::-1]:
print(i, end=" ")'코딩테스트 > 코딩테스트 문제풀이' 카테고리의 다른 글
| [Python] 백준 <2293-동전 1> (0) | 2025.07.16 |
|---|---|
| [Python] 백준 <3190-뱀> (0) | 2025.07.16 |
| [Python] 백준 <11054-가장 긴 바이토닉 부분 수열> (0) | 2025.07.11 |
| [Python] 백준 <16929-Two Dots> (0) | 2025.07.11 |
| [Python] 백준 <11053-가장 긴 증가하는 부분 수열> (0) | 2025.07.11 |