[알고리즘] 과반수 이상인 숫자 반환(reversed, map)

hamingu·2021년 5월 4일
0

알고리즘

목록 보기
2/6

🔎 해당 문제에 사용한 함수

  • map
  • reversed
  • 문제 : 숫자가 담긴 배열에서 과반수가 넘은 숫자 찾기

    예를들어 [2,2,2,3,3,3,3]을 인자로 받으면 2 = 3개, 3 = 4개로 3이 과반수가 넘은 숫자이므로 3을 반환해준다.

    내 코드

    def more_than_half(nums):
      nums_dict = {}
      for i in nums:
        if i in nums_dict:
          nums_dict[i] += 1
        else:
          nums_dict[i] = 1
      reverse_dict = dict(map(reversed, nums_dict.items()))
      return reverse_dict[max(reverse_dict)]1)

    풀이

    1) 먼저 배열안의 숫자가 몇개있는지를 딕셔너리 형태로 저장할 것이다(숫자 = key, 개수 = value)

    2) 숫자 배열을 for문으로 돌려 숫자가 딕셔너리의 key값에 존재한다면 개수에 해당하는 value 값을 1씩 +해준다.

    3) 존재하지 않는다면 숫자를 key로 새로 생성해주고 value는 1로 만들어준다.

    중간설명: 1) ~ 3)까지 진행 시 배열 안의 숫자와 개수가 key : value로 이루어진 딕셔너리가 생성됨

    4) return 해줘야 하는 값은 value가 아니라 value가 가장 높은 key에 해당하는 숫자를 반환하는 것이다.

    5) value를 통해 key 값을 바로 반환하는 방법이 없어 key값과 value값을 reverse 함수를 통해 바꿔주었다.

    6) 마지막으로 max 함수를 통해 가장 높은 key값을 추출하여 그 value 값을 반환하면 성공

    이렇게 검색찬스 없이 혼자 힘으로 푼 날은 하루의 시작부터 상쾌하다!

    profile
    프로그래밍구

    0개의 댓글