21.3.9

알고리즘 6일차

문제 : 리스트 인자 중 과반이 되는 요소 추출

  1. 접근 :
  • 요소의 갯수가 관건. 그러므로 count로 접근.
  • 과반수 : 전체 len값의 1/2
  1. 내 코드 :
def more_than_half(nums):
  result = []
  for i in nums:
    if nums.count(i) >= len(nums) / 2:
      result.append(i)

  return result[0]
  # 요소 모두가 같으므로 1개만 뽑아옴.


print(more_than_half([3, 2, 3]))
  1. 필요했던 개념 : 리스트 갯수에 대한 내용.

난이도가 높지 않아서 금방 해결했다.

다른 접근(21.5.1)

def more_than_half(nums): 
  nums.sort()
  # 순서 상관 없으므로 일단 정렬
  to_dict = {i : nums.count(i) for i in nums}
  # list comprehension으로 리스트를 딕셔너리화하고 각 요소가 몇 개인지 확인
  return max(to_dict.keys(), key=lambda k : to_dict[k])
  # lambda 이용하여 가장 큰 키의 값을 추출
print(more_than_half([0,1,2,3,0,0,0,0,0]))

좋은 웹페이지 즐겨찾기