문제: 코딩테스트 연습 - 최빈값 구하기 | 프로그래머스 스쿨 (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 |
나의 문제 풀이
import java.util.*;
class Solution {
public int solution(int[] array) {
int answer = 0;
int max;
Arrays.sort(array);
max = array[array.length - 1];
int[] count = new int[max + 1];
for (int i = 0; i < array.length; i++) {
count[array[i]]++;
}
max = count[0];
for (int i = 1; i < count.length; i++) {
if (max < count[i]) {
max = count[i];
answer = i;
}else if(max == count[i]) {
answer = -1;
}
}
return answer;
}
}
다른 사람의 문제풀이
import java.util.*;
class Solution {
public int solution(int[] array) {
int maxCount = 0;
int answer = 0;
Map<Integer, Integer> map = new HashMap<>();
for(int number : array){
int count = map.getOrDefault(number, 0) + 1;
if(count > maxCount){
maxCount = count;
answer = number;
}
else if(count == maxCount){
answer = -1;
}
map.put(number, count);
}
return answer;
}
}
느낀점
나도 map을 이용해서 다시한번 풀어봐야겠다!!
'코딩테스트 연습 > 프로그래머스 LV.0' 카테고리의 다른 글
[프로그래머스] Lv.0 소인수분해 - 자바(Java) (0) | 2024.03.23 |
---|---|
[프로그래머스] Lv.0 컨트롤 제트 - 자바(Java) (2) | 2024.03.22 |
[프로그래머스] Lv.0 짝수는 싫어요 - 자바(Java) (0) | 2024.03.20 |
[프로그래머스] Lv.0 피자 나눠 먹기 (2) - 자바(Java) (0) | 2024.03.19 |
[프로그래머스] Lv.0 옷가게 할인 받기 - 자바(Java) (0) | 2024.03.18 |