728x90

https://school.programmers.co.kr/learn/courses/30/lessons/120812

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

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

 

 

 

 

풀이)

public class Solution {
    public int solution(int[] array) {
        int answer = -1;  // 최빈값을 저장하는 변수, 초기값으로 -1을 설정
        int maxFrequency = 0;  // 최빈값의 등장 횟수를 저장하는 변수, 초기값으로 0을 설정

        for (int i = 0; i < array.length; i++) {
            int currentNumber = array[i];  // 현재 위치의 숫자
            int currentFrequency = 1;  // 현재 숫자의 등장 횟수, 초기값으로 1을 설정

            // 현재 숫자와 같은 숫자들의 등장 횟수를 세기
            for (int j = i + 1; j < array.length; j++) {
                if (currentNumber == array[j]) {
                    currentFrequency++;
                }
            }

            // 현재 숫자의 등장 횟수가 최빈값의 등장 횟수보다 크면 최빈값을 업데이트
            if (currentFrequency > maxFrequency) {
                maxFrequency = currentFrequency;
                answer = currentNumber;
            } else if (currentFrequency == maxFrequency) {
                // 최빈값이 여러 개인 경우 -1을 반환하기 위해 mode를 -1로 설정
                answer = -1;
            }
        }

        return answer;  // 최종적으로 찾은 최빈값 반환
    }
}

HashMap으로는 풀기 싫어서 1시간 넘게 생각해낸 방법이다...생각보다 복잡해서 어려웠음ㅠㅠㅠ최빈값구하기...

728x90