본문 바로가기

JAVA/연습노트

[프로그래머스 - 자바] 최빈값 구하기

 

 

 

 

정답 

import java.util.Arrays;

class Solution {

public int solution(int[] array) {

int answer = 0;

int max = 0;

 

Arrays.sort(array); //오름차순 정렬을 하여 가장 큰 수를 맨 뒤로 보낸다

max = array[array.length-1]; //인덱스가 0부터 시작하므로 배열의 길이에서 1뺀 인덱스 값을 넣어 max에 저장

//max의 길이를 array 배열 중 가장 큰 수로 정하는 이유

// - array 배열의 값을 count 인덱스 주소에 저장할 예정이기 때문

//각 수를 세고 저장할 count 배열 생성

int count[] = new int[max+1]; //max 인덱스가 0부터 시작하므로 길이는 +1 해준다

for(int i=0;i<array.length;i++){

count[array[i]]++; //count 배열에 array로 정렬된 배열 값을 넣어준다

}

max = count[0]; //가장 첫 주소값 인덱스 0값을 max에 대입 > 이후 count 길이만큼 진행

for(int i=1;i<count.length;i++){ //for문이 진행되는 동안

if(max<count[i]){ //max보다 count 배열값이 더 크면

max=count[i]; //max에 count 배열값 저장

answer = i; //최종적으로 가장 많이 count 값이 저장된 인덱스 i를 answer에 대입

}else if(max == count[i]){ //만일 max값이 count 배열의 모든 값과 동일하다면

answer = -1; // -1을 리턴

}

}

return answer;

}

}