반응형
백준 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 |
댓글