본문 바로가기

프로그래머스/level 0

[C] 최빈값 구하기

문제 설명

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

 

입출력 예 설명

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

 

solution.c

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int array[], size_t array_len) 
{
    int answer = 0;
    int count = 0; //반복되는 횟수
    int check = 0; //반복 확인 변수

    for(int i = 0; i < array_len; i++)
    {
        for(int j = i; j < array_len;j++)
        {
            if (array[i] == array[j]) //배열 길이만큼 비교
                count++; //배열 값이 같을 경우 카운트 값 증가 
        }

        if(count > check) 
        {
            answer = array[i]; //반복된 배열 값이 answer 출력
            check = count; //check값 증가 
        }

        else if(count == check) //반복 횟수가 같을 경우
        {
            answer = -1; //-1 출력 
        }

        count = 0; //count값 초기화
    }
    return answer;
}
반복문의 구조에 대한 이해가 부족해서 해결에 오래 걸렸었다. 

 

 

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges