알쓸코지
article thumbnail

🔗 문제

https://school.programmers.co.kr/learn/courses/30/lessons/120812

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 설명

최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.

제한사항

  • 0 < array의 길이 < 100
  • 0 ≤ array의 원소 < 1000

입출력 예

array result
[1, 2, 3, 3, 3, 4] 3
[1, 1, 2, 2] -1
[1] 1

+) 추가 반례!

array result
[0, 0, 1] 0
[1, 1, 1] 1
[1, 2, 3] -1

 

💻 Code

from collections import Counter

def solution(array):
    if len(array) == 1 or len(set(array)) == 1:
        return array[0]
    else:
        counter = Counter(array).most_common()

        if counter[0][1] == counter[1][1]:
            return -1
        else:
            return counter[0][0]
  1. 원소의 개수가 1개이거나, 모두 같은 원소로 이루어진 배열의 경우 (<- 이러한 특이 케이스를 빼먹어서 몇 번 틀렸다.)
  • 따로 등장 횟수를 카운트할 필요가 없으므로 바로 array[0]을 리턴한다.

 

  1. 위의 조건에 해당되지 않을 경우
  • collections.Counter를 이용하여 배열의 각 문자에 대한 등장 횟수를 카운트한다.
    • most_common()(요소값, 등장 횟수) 형태로 가장 많이 등장한 순서대로 리스트를 반환한다.
  • counter[0][1] == counter[1][1]True라는 말은, 최빈값이 여러 개라는 뜻이므로 -1을 리턴한다.
    • False일 경우, 최빈값이 하나라는 말이므로 counter[0][0]을 리턴한다.

'Algorithm > 프로그래머스' 카테고리의 다른 글

[Lv.0/Python] 특이한 정렬  (0) 2023.07.07
[Lv.0/Python] 문자열 밀기  (0) 2023.07.07
[Lv.0/Python] OX퀴즈  (0) 2023.07.06
[Lv.0/Python] 홀수 vs 짝수  (0) 2023.07.05
[Lv.0/Python] k의 개수  (0) 2023.07.05
profile

알쓸코지

@chocoji

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!