[알고리즘 문제풀이] 코드카타 6

나른한 개발자·2022년 1월 17일
0

문제풀이

목록 보기
6/13

숫자로 이루어진 배열인 nums를 인자로 전달합니다.
숫자중에서 과반수(majority, more than a half)가 넘은 숫자를 반환해주세요.
-입력: 숫자 리스트
-출력: 개수가 과반수인 정수

풀이

  • max()와 람다를 이용하여 원소를 하나씩 꺼내어 가장 개수가 큰 원소를 리턴한다.
def more_than_half(nums):
  return max(nums, key= lambda x: nums.count(x))

이전 풀이

  • 반복문으로 리스트 내의 원소의 개수를 조사하고 majority보다 개수가 많다면 해당 원소를 majority에 대입한다.
def more_than_half(nums):
  majority_count = 0

  for num in nums:
 	if majority_count <= nums.count(num):
             majority_count = nums.count(num)
 	     majority = num
         
  return majority

+)

처음에는 두번째 코드처럼 풀었다가 뭔가 더 간단히 풀 수 있는 방법이 있을 것 같아 max함수에 lambda를 이용하여 풀어보았다.

lambda를 알고만 있었지 활용하지는 못했는데, 이런식으로 활용하니 훨씬 간단한 것 같다.

앞으로 리스트의 원소를 하나씩 꺼내 특정 함정 함수를 적용해야할 때 많이 써봐야겠다.

profile
Start fast to fail fast

0개의 댓글