문제 설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
제한사항
- 0 < array의 길이 < 100
- 0 ≤ array의 원소 < 1000
입출력 예arrayresult
[1, 2, 3, 3, 3, 4] | 3 |
[1, 1, 2, 2] | -1 |
[1] | 1 |
예외테스트 몇개가 자꾸 오답이어서, 다른 분 코드를 조금 참고해서 풀었다.
내일 다시 풀어보기로
public class Solution {
public int solution(int[] array) {
int answer = 0;
int arr_max = 0;
//array의 가장 큰 값을 기준으로
for (int i = 0; i < array.length; i++) {
if (array[i] > arr_max) {
arr_max = array[i];
}
}
// 그만큼 index배열 생성 ( array의 원소값을 index배열의 index로 쓰는것임 )
int[] index = new int[arr_max + 1]; //
int max = 0;
int cnt = 0;
// array의 해당 원소를 index배열의 index값을 증가시켜 최빈값 계산
for (int i = 0; i < array.length; i++) {
index[array[i]]++;
}
// index배열의 해당 값이 max보다 크면 가장 최빈값
for (int i = 0; i < index.length; i++) {
if (index[i] > max) {
max = index[i];
answer = i; // 최빈 값을 answer로
}
}
// 최빈 값이 여러개 일때
for (int i = 0; i < index.length; i++) {
if (index[i] == max) {
cnt++;
}
}
if (cnt > 1) answer = -1;
return answer;
}
}
'📚 코딩테스트 > 백준 & 프로그래머스' 카테고리의 다른 글
[프로그래머스][JAVA]Level 0 : 삼각형의 완성조건(2) (0) | 2022.11.03 |
---|---|
[SWEA][JAVA] 일요일 (0) | 2022.11.02 |
[프로그래머스][JAVA]Level 1 : 삼총사 (0) | 2022.11.02 |
[SWEA][JAVA] 알파벳 공부 (0) | 2022.11.01 |
[프로그래머스][JAVA]Level 1 : 모의고사 (완전탐색) (0) | 2022.11.01 |