Study/Java

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

1.jun 2024. 9. 30. 15:22
728x90
반응형

 

 

코딩테스트 연습 | 프로그래머스 스쿨

개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!

school.programmers.co.kr

 

목차
  1. 문제 설명
  2. 입출력 예시
  3. 문제 풀이

 

 


1. 문제 설명

 

 

728x90

 

문제 설명

최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다.
정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요.
최빈값이 여러 개면 -1을 return 합니다.

 

 

제한사항

  • 0 < array의 길이 < 100
  • 0 ≤ array의 원소 < 1000

 

 

 

 

 


2. 입출력 예시

 

 

 

 

입출력 예시

#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입니다.

 

 

 

 

 


3. 문제 풀이

반응형

 

문제 풀이

1. 길이가 1000인 배열 index를 만든다. (0~999가 얼마나 등장했는지 세기 위한 배열)

 

2. 변수 max를 만든다. (가장 큰 등장 횟수를 저장하기 위한 변수)

 

3. for문을 사용하여, 배열 array의 값을 넣어 배열 index에서 해당 인덴스에 1씩 증가시킨다.

 

4. for문을 사용하여, 배열 index에서 가장 높은 숫자를 가진 인덱스를 찾아 answer에 넣는다.

 

5. else if를 사용하여 최빈값이 하나라도 같으면 answer에 -1을 넣는다.

 

6. answer를 반환한다.

 

 

 

class Solution {
    public int solution(int[] array) {
        int answer = 0;
        int[] index = new int [1000];
        int max = 0;
        
        for(int i=0; i<array.length; i++){
            index[array[i]]++;
        }
        
        for(int i=0; i<index.length; i++){
            if(max < index[i]){
                max = index[i];
                answer = i;
            
            } else if (max == index[i]){
                answer = -1;
            }
        } 
        return answer;
    }
}

 

 

 

 

메모

 for(int i=0; i<index.length; i++){
            if(max < index[i]){
                max = index[i];
                answer = i;
            }

 

: 배열 index를 순회하면서, max의 값이 index[i] 값 보다 작으면, max에 index[i] 값을 넣고 answer에도 i의 값을 넣는다.

 

 

 

 

 

 

 

728x90
반응형