728x90
반응형
※ 문제 설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
※ 제한사항
• 0 < array의 길이 < 100
• 0 ≤ array의 원소 < 1000
※ 입출력 예
my_string | result |
[1, 2, 3, 3, 3, 4] | 3 |
[1, 1, 2, 2] | -1 |
[1] | 1 |
※ 입출력 예 설명
입출력 예 #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입니다.
나의 풀이
import java.util.Arrays;
class Solution {
public int solution(int[] array) {
int answer = 0;
int idx = 0;
int cnt = 0;
int[] t = new int[1];
t[0] = 0;
Arrays.sort(array);
for(int i=0; i<=array[array.length-1]; i++) {
for(int j=0; j<array.length; j++) {
if(i == array[j]) {
cnt++;
}
}
if(t[0] < cnt) {
t[0] = cnt;
answer = i;
} else if(t[0] == cnt) {
t[0] = cnt;
answer = -1;
}
cnt = 0;
}
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;
}
}
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][JAVA] 다음에 올 숫자 (LV.0) (0) | 2023.02.14 |
---|---|
[프로그래머스][JAVA] OX퀴즈 (LV.0) (0) | 2023.02.14 |
[프로그래머스][JAVA] 다항식 더하기 (LV.0) (0) | 2023.02.14 |
[프로그래머스][JAVA] 저주의 숫자 3 (LV.0) (0) | 2023.02.14 |
[프로그래머스][JAVA] 특이한 정렬 (LV.0) (0) | 2023.02.13 |