시작하며...
모든 알고리즘 문제 풀이는 제가 직접 짜서 정답을 맞춘 결과만을 공유합니다.
마지막 'More Solution'은 다른 정답자들 풀이 중 생각지 못했던 부분들이나 좋게 느껴진 풀이법 몇개를 가져와서 공유하였습니다.
[Level 0] 최빈값 구하기
문제 설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
제한사항
- 0 < array의 길이 < 100
- 0 ≤ array의 원소 < 1000
입출력 예
입출력 예 설명
입출력 예 #1
- [1, 2, 3, 3, 3, 4]에서 1은 1개 2는 1개 3은 3개 4는 1개로 최빈값은 3입니다.
입출력 예 #2
- [1, 1, 2, 2]에서 1은 2개 2는 2개로 최빈값이 1, 2입니다. 최빈값이 여러 개이므로 -1을 return 합니다.
입출력 예 #3
- [1]에는 1만 있으므로 최빈값은 1입니다.
My Solution
def solution(array):
dic = {}
for n in array:
if n not in dic:
dic[n] = 0
dic[n] += 1
cnt = list(dic.values())
reversed_dic = dict(map(reversed, dic.items()))
if cnt.count(max(cnt)) > 1:
return -1
else:
return reversed_dic[max(cnt)]
리스트 배열의 최빈값을 구하는 문제
- 주어진 배열의 각 원소들을 카운트 해줄수 있는 딕셔너리 dic 를 생성한다.
- 배열의 전체 길이만큼 반복문을 돌면서 각각의 원소 n이 dic에 포함되어있지 않으면 dic[n] = 0 으로 초기화하여 생성하고 카운트를 + 1 해준다.
- 반복문을 다 돌고나면 각 원소들이 key로 횟수가 value로 주어지는 dic가 된다.
- 등장 횟수인 dic.values() 만 가져와서 cnt라는 리스트에 담는다.
- 그리고 등장횟수인 value값으로 key를 찾기 위해서 reversed_dic 라는 변수를 만들어서 key와 value를 뒤집어서 만들어준다.
- 등장 횟수 cnt의 max값을 count했을 때, 1보다 크다면 최빈값이 여러개라는 의미이므로 -1을 리턴한다.
- 그렇지 않다면 max값의 count가 1개라는 의미이므로 reversed_dic[value] 으로 해당 key인 숫자를 찾아주면 된다.
'Algorithm > Programmers' 카테고리의 다른 글
[Algorithm] 프로그래머스 - 모의고사 (0) | 2023.01.11 |
---|---|
[Algorithm] 프로그래머스 - 폰켓몬 (0) | 2023.01.10 |
[Algorithm] 프로그래머스 - 공 던지기 (0) | 2023.01.09 |
[Algorithm] 프로그래머스 - 2016년 (0) | 2023.01.09 |
[Algorithm] 프로그래머스 - 숫자 문자열과 영단어 (0) | 2023.01.09 |
댓글