목차
개요
17299번: 오등큰수
첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다.
www.acmicpc.net
풀이
17298번: 오큰수 (acmicpc.net) 이 문제에서 파생된 문제라고 보면 된다.
어떤 배열을 받아서 새로운 배열을 만드는데, 새로운 배열의 각 원소는 원래 배열을 기준으로 오른쪽에 위치한 원소들 중에서 가장 큰 놈을 값으로 삼는다. 오른쪽에서 가장 큰 수, 줄여서 오큰수.
이 놈은 거기에서 한 스텝 더 나아가서 오른쪽에서 가장 등장 횟수가 큰 수, 오등큰수!
그래서 오큰수 풀이에서 Counter만 추가해서 풀어주면 된다.
대충만 설명하자면 인덱스를 스택으로 쌓는다. 그리고 원래 배열을 순회돌면서 각 자리를 오등큰수로 삼는 인덱스들을 찾아서 값을 매기는 방식.
코드
from collections import Counter
N = int(input())
inlst = list(map(int, input().split()))
lst = [-1] * N
stack = []
fa = Counter(inlst)
for i in range(N):
while stack and fa[inlst[stack[-1]]] < fa[inlst[i]]:
lst[stack.pop()] = inlst[i]
stack.append(i)
print(*lst)
'알고리즘 > 백준 풀이' 카테고리의 다른 글
[백준] 1030번: 프렉탈 평면 (파이썬/Python) (1) | 2023.04.16 |
---|---|
[백준] 9252번: LCS 2 (파이썬/Python) (0) | 2023.03.05 |
[백준] 9935번: 문자열 폭발 (파이썬/Python) (0) | 2023.02.21 |
[백준] 2444번: 별 찍기 - 7 (파이썬/Python) (0) | 2023.02.21 |
[백준] 10811번: 바구니 뒤집기 (파이썬/Python) (0) | 2023.02.21 |