nums는 숫자로 이루어진 배열입니다.
가장 자주 등장한 숫자를 k 개수만큼 return 해주세요.
nums = [1,1,1,2,2,3],
k = 2
return [1,2]
nums = [1]
k = 1
return [1]
need to know
- codekata #7에 사용했던걸 응용해보자
문자로 짜봐
- 리스트안 숫자를 센 개수를 담을 빈리스트 만들고
- 최종 결과를 담을 빈 리스트 만들고
- 리스트에 있는 숫자중복 제거(
set())해서 하나씩 for문 돌린다- 들어온 숫자와, 들어온 숫자가 nums안에 들어있는 개수를 튜플로 리스트에 포함시키자
- 들여보낸 튜플리스트를 가장 큰 가장 많은 순서대로 솔팅, 저기 보니까
[1]은 튜플의2번째 인덱스를 기준으로 솔팅한다는 말- 그후 k숫자를 포문에 넣고, 그에따른 리스트의 인덱스와 리스트안 튜플의 인덱스를 넣어서 리스트에 추가 후 출력 !
정답
def top_k(nums, k): nums_list = [] # 카운트 개수를 담을 빈리스트 result = [] # 결과를 담을 빈 리스트 for i in set(nums): # 리스트에 있는 숫자중복 제거해서 하나씩 for문 돌리기 nums_list.append((i,nums.count(i))) # 들어온 숫자와, 들어온 숫자가 nums안에 들어있는 개수를 튜플로 리스트에 포함 nums_list.sort(key=lambda x:-x[1]) # 들여보낸 튜플리스트를 가장 큰 가장 많은 순서대로 솔팅할껀데 저기 보니안[1]은 튜플의 2번째 인덱스를 기준으로 솔팅한다는 말 for i in range(k): # k를 포문에 넣고 result.append(nums_list[i][0]) # 그에따른 인덱스 넣기 return result
참고
set()nums_list.append((i,nums.count(i)))(key=lambda x:-x[1])nums_list[i][0]