알고리즘/백준

[백준] 17299 오등큰수 (Python)

DeveloperJason 2023. 2. 13. 18:10

문제


 

17299번: 오등큰수

첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다.

www.acmicpc.net

문제 풀이


 

 

[백준] 17298 오큰수 (Python)

문제 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 문제 풀이 해당 문제의 입력이 백

developer-jason.tistory.com

위 문제와 사실상 동일한 문제,

 

하지만 이 문제에서는 수 자체를 비교하지 않고 수가 등장한 빈도와 비교를 한다.

 

수의 빈도는 참조에 용이하도록 딕셔너리로 구현하였다.

 

 

 

코드


N = int(input())
A = list(map(int, input().split()))

F = dict()

for i in A:
    if i not in F:
        F[i] = 1
    else:
        F[i] += 1
stack = []
stack.append(0)
NGF = [-1 for _ in range(N)]

for i in range(1, N):
    while stack and F[A[stack[-1]]] < F[A[i]]:
        NGF[stack.pop()] = A[i]
    stack.append(i)
print(*NGF)