본문 바로가기
코딩테스트 문제풀이/beakjoon

[백준] 2910 빈도 정렬

by merona99 2022. 8. 18.
반응형

백준 2910번 빈도 정렬

자료구조 / 정렬 / 해시를 사용한 집합과 맵 / 트리를 사용한 집합과 맵

 

 

 

[문제]

 

 

[과정]

  • 입력받은 데이터를 [데이터, 순서, 빈도]의 형태의 리스트로 만듬
  • lambda sort 통해 (빈도,순서)의 순번으로 리스트 정렬
  • 정렬된 리스트를 반복문을 통해서 빈도의 개수만큼 데이터를 출력

 

 

[소스코드]

# 2910 빈도 정렬

n,c = map(int, input().split())
arr = list(map(int, input().split()))
data = []    # 데이터, 순서, 빈도 

cnt = 1
tmp_data = []
for a in arr:

    if not a in tmp_data:
        tmp_data.append(a)
        data.append([a,cnt,1])
        cnt += 1
    else:
        idx = tmp_data.index(a)
        data[idx][2] += 1

data.sort(key=lambda x: (-x[2],x[1]))
ans = []
for d in data:
    for i in range(d[2]):
        ans.append(d[0])
print(' '.join(str(a) for a in ans))

 


 

[통과]

 

반응형

'코딩테스트 문제풀이 > beakjoon' 카테고리의 다른 글

[백준] 9251 LCS  (0) 2022.08.22
[백준] 7795 먹을 것인가 먹힐 것인가  (0) 2022.08.19
[백준] 5430 AC  (0) 2022.08.12
[백준] 1021 회전하는 큐  (0) 2022.08.12
[백준] 10866 덱  (0) 2022.08.12

댓글