#빈도, 들어온 순서
n,c = map(int,input().split())
arr = list(map(int,input().split()))
bindo = {} #빈도, 처음 등장위치
for i in range(n):
if arr[i] in bindo:
bindo[arr[i]][0]+=1
else :
bindo[arr[i]]=[1,i] #빈도,위치
sortBindo = sorted(bindo.items(),key = lambda x : (-x[1][0],x[1][1]))
result = []
for i in sortBindo:
for j in range(i[1][0]):
result.append(str(i[0]))
print(" ".join(result))
딕셔너리를 활용하는 문제이다.
key로 입력된 수를 잡고
value를 [빈도,위치]를 넣는 방법이다.
그렇게 sorted를 써서 원하는대로 정렬을 진행 한 후
result에 정렬된 key를 빈도 만큼 곱해주면서 수열을 만들어주고 join으로 출력을 진행해주면 된다.