반응형
1. 문제

1 - 1. 문제 설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 retrun 하도록 solution 함수를 완성해보세요, 최빈값이 여러 개면 -1을 return 합니다.
1 - 2. 제한사항
- 0<= array의 길이 <=1000
- 0<= array의 원소 <= 1000
1 - 3. 입출력 예 설명
- 입출력예 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입니다.
2. 문제해결방법
def solution(array):
count = [0] * (max(array)+1) # 숫자 출연 횟수를 셀 리스트
for i in array:
count[i] += 1
m = 0 # 최빈값의 개수
for c in count:
if c == max(count):
m += 1
if m > 1: # 최빈값이 2개 이상이면 -1을 리턴
return -1
else: # 최빈값이 1개이면 해당 숫자를 리턴
return count.index(max(count))
array=[1,1,2,2]이라고 가정했을때
1. 각 인덱스마다 횟수를 정해 놓을 리스트를 count로 정의를 했다. 왜 +1해줬냐면 다음 for문을 돌릴때 array는 인덱스는 3까지 있는데 count는 2 밖에 없기 때문이다. 그래서 count는 [0, 0, 0]이 나온다
2. for문을 돌려서 중복되는 수를 카운트하게 된다. [0, 1, 0] [0, 2, 0] [0, 2, 1] [0, 2, 2]
3. [0,2,2]가 count의 값이 된다. 그래서 for문을 돌려 하나씩 꺼내서 max(count)가 최빈값이 되는거니까 최빈값의 개수를 정한다.
4. 그래서 조건문을 이용해 만약에 최빈값이 1개가 넘으면 -1을 반환하고 아니면 최빈값의 인덱스를 구한다.
4. 느낀점
0레벨 문제 였지만 난이도가 있는 문제였다. 중간에 풀지 못해서 다른 사람의 코드를 보고 겨우 풀 수 있었다.
이제 1레벨을 슬슬 풀려고 생각하는데 이 문제의 난이도랑 비슷하면 과연 내 힘으로 풀수 있을까라는 생각이든다.
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 추억 점수_python (0) | 2023.04.26 |
---|---|
[프로그래머스] 제일 작은 수 제거 하기_python (0) | 2023.04.14 |
[프로그래머스] 숨어있는 숫자의 덧셈 (2)_python (0) | 2023.04.08 |
[프로그래머스] 문자열 밀기_python (0) | 2023.04.05 |
[프로그래머스] 피자 나눠 먹기(3) (0) | 2023.04.04 |