[CodeKata]Day7

miracle-21·2022년 6월 15일
0

python 문제

목록 보기
22/47
post-thumbnail

가장 많이 들어있는 수 찾기
Code Kata 란, 2인 1조의 구성으로 서로 협력하여 하루에 한 문제씩 해결하는 과제입니다.


# 문제

숫자로 이루어진 배열인 nums를 인자로 전달합니다.

숫자중에서 과반수(majority, more than a half)가 넘은 숫자를 반환해주세요.

예를 들어,

nums = [3,2,3]
return 3
.
nums = [2,2,1,1,1,2,2]
return 2

+ 가정

nums 배열의 길이는 무조건 2 이상입니다.


# 코드

def more_than_half(nums):
    # 아래 코드를 입력해주세요.
  setnums = list(set(nums))
  setnums.sort()
  countlist = []
  maxnumber = 0
  
  for i in setnums :
      a = nums.count(i)
      countlist.append(a)
  maxnumber = max(countlist)
  res = countlist.index(maxnumber)
  return setnums[res]

# 풀이 과정

  1. set()으로 중복 값 제거 후 setnums 변수에 할당, 오름차순으로 정렬.
  2. 빈 리스트 countlist 생성
  3. for문으로 setnum의 인수가 nums에 몇 개 들어있는지 확인, countlist에 추가.
  4. max() 함수로 가장 큰 값 maxnumber변수에 할당.
  5. index() 함수로 maxnumver 값을 갖는 countlist의 index값 확인
  6. return

+ 그 외 코드

def more_than_half(nums):
    # 아래 코드를 입력해주세요.
    num = {}
    for i in nums:
        try: num[i] +=1 # 딕셔너리에 해당 key가 있으면(오류가 없으면) 갯수 +1
        except: num[i] =1 # 없으면 갯수가 1이라고 저장
    for key, value in num.items():
        if value == max(num.values()):
            return key
profile
backend developer 🐌

0개의 댓글