[프로그래머스] 최빈값 구하기

Oayenn·2023년 6월 26일
0

Programmers

목록 보기
1/6
post-thumbnail
post-custom-banner

⚙️나의 코드

None

✏️Solution 1

def solution(array):
    while len(array) != 0:
        for i, a in enumerate(set(array)):
            array.remove(a)
        if i == 0:
            return a
    return -1

enumerate

  • 리스트의 원소에 인덱스를 부여해준다.

  • Ex

    for entry in enumerate(['A', 'B', 'C']):
        print(entry)
    
    /*출력 결과*/
    (0, 'A')
    (1, 'B')
    (2, 'C')

set

  • 리스트 내의 중복을 제거해준다.

  • Ex

    arr = [1, 2, 3, 3, 4, 5, 6, 6, 6, 6, 7]
    arr = set(arr)
    
    print(arr)
    
    /*출력 결과*/
    {1, 2, 3, 4, 5, 6, 7}

✏️Solution 2

from collections import Counter

def solution(array):
    a = Counter(array).most_common(2)
    if len(a) == 1:
        return a[0][0]
    if a[0][1] == a[1][1]:
        return -1
    return a[0][0]

Counter

  • 배열 내에서 같은 요소의 개수를 세어 리턴한다.

most_common()

  • 개수가 많은 순으로 정렬된 튜플 배열 리스트를 리턴한다.
  • () 안에 숫자를 넣으면 리턴할 요소의 개수를 지정할 수 있다.

이 풀이는 아래처럼 if-elif-else를 사용해서 수정해도 좋을 것 같다.

from collections import Counter

def solution(array):
    a = Counter(array).most_common(2)
    if len(a) == 1:
        return a[0][0]
    elif a[0][1] == a[1][1]:
        return -1
    else: return a[0][0]
profile
차근차근 쌓아올리기
post-custom-banner

0개의 댓글