Code Kata | Week2 - Day4

2022. 7. 14. 21:45·wecode
반응형

문제

nums는 숫자로 이루어진 배열입니다.

가장 자주 등장한 숫자를 k 개수만큼 return 해주세요.

 

nums = [1,1,1,2,2,3],
k = 2

return [1,2]

nums = [1]
k = 1

return [1]
 

풀이 1-1

def top_k(nums, k):
  res = []
  for i in range(k):
    max_num = max(nums, key=nums.count)
    res.append(max_num)
    for num in nums[:]:
      if num == max_num:
        nums.remove(num)
  return res

 

max의 key 속성을 활용해서 제일 많이 등장한 숫자면 리스트에 넣고,

넣은 다음에 리스트에서 해당 숫자를 삭제했다.

그걸 k번 반복하고 리스트를 반환했다.

 

1-2

def top_k(nums, k):
  res = []
  for i in range(k):
    max_num = max(nums, key=nums.count)
    res.append(max_num)
    nums = [num for num in nums if num not in res]
  return res

 

위랑 같은데 원래 리스트에서 제일 많은 값을 remove로 삭제하는 대신 리스트 컴프리헨션을 이용해서 제일 많은 값 뺀 값들만 넣는 방법으로 없앴다.

 

2-1

def top_k(nums, k):
  sort_nums = sorted(set(nums), key=nums.count, reverse=True)
  return [sort_nums[i] for i in range(k)]

 

리스트를 set으로 바꾸고 sorted와 key를 사용해서 제일 많이 나온 값부터 차례로 중복 안되게 정렬하고 k만큼만 반환했다.

 

2-2

def top_k(nums, k):
  return sorted(set(nums), key=nums.count, reverse=True)[:k]

 

리스트 복사[ : ]를 이용해서 for문을 없애고 바로 k만큼만 반환했다

 

def top_k(nums, k):
  return sorted(set(nums), key=lambda num: nums.count(num), reverse=True)[:k]

 

lambda로 바꿔보았다.

 

 

 

 

 

(set을 sort하면 list가 된다)

 

nums = [1,1,1,2,2,3]
print(set(nums))
print(type(set(nums)))
print(sorted(set(nums)))
print(type(sorted(set(nums))))

# 결과
# {1, 2, 3}
# <class 'set'>
# [1, 2, 3]
# <class 'list'>

 

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'wecode' 카테고리의 다른 글

[Mission 4] 로그인 기능 구현  (0) 2022.07.16
[Mission 3] 회원가입 기능 구현  (0) 2022.07.16
[Mission 2] 모델링  (0) 2022.07.16
Code Kata | Week2 - Day5  (0) 2022.07.15
Code Kata | Week2 - Day3  (0) 2022.07.13
'wecode' 카테고리의 다른 글
  • [Mission 3] 회원가입 기능 구현
  • [Mission 2] 모델링
  • Code Kata | Week2 - Day5
  • Code Kata | Week2 - Day3
이라후
이라후
  • 이라후
    화이팅
    이라후
  • 전체
    오늘
    어제
    • 분류 전체보기 (133)
      • TIL (23)
      • 기타 (26)
      • Python (14)
      • Django (10)
      • JavaScript (8)
      • git & GitHub (8)
      • Web (10)
      • Go (3)
      • wecode (31)
  • 반응형
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
이라후
Code Kata | Week2 - Day4
상단으로

티스토리툴바