최빈값 구하기

2024. 5. 16. 17:52정보처리,전산/Clang

반응형
#include <stdio.h>

#define MAX_SIZE 10

int main() {
    char input[MAX_SIZE][10];
    int count[MAX_SIZE] = {0}; // 각 요소의 등장 횟수를 저장하는 배열
    int max_count = 0;
    char mode[10]; // 최빈값을 저장하는 변수
    int i, j, n;

    // 데이터 입력
    printf("데이터를 입력하세요~\n");
    scanf("%d", &n);
    printf("%d개의 데이터를 입력하세요:\n", n);
    for (i = 0; i < n; i++) {
        scanf("%s", input[i]);
    }

    // 등장 횟수 계산
    for (i = 0; i < n; i++) {
        count[i] = 1; // 현재 요소의 등장 횟수는 최소 1회
        for (j = i + 1; j < n; j++) {
            if (strcmp(input[i], input[j]) == 0) {
                count[i]++;
            }
        }
    }

    // 최빈값 찾기
    for (i = 0; i < n; i++) {
        if (count[i] > max_count) {
            max_count = count[i];
            strcpy(mode, input[i]);
        }
    }

    // 결과 출력
    printf("최빈값은 %s 이고 %d개 입니다.\n", mode, max_count);

    return 0;
}



char input[MAX_SIZE][10]: 최대 크기가 10인 2차원 문자열 배열 `input`을 선언

int count[MAX_SIZE] = {0}: 각 요소의 등장 횟수를 저장하는 배열 `count`를 선언

int max_count = 0: 가장 많이 등장한 요소의 등장 횟수를 저장하는 변수를 초기화

char mode[10]: 최빈값을 저장하는 문자열 변수를 선언



 데이터의 개수를 입력받고, 해당 개수만큼 데이터를 입력받고 중첩 반복문을 사용하여 각 요소의 등장 횟수를 계산한 후 등장 횟수를 비교하여 가장 많이 등장한 요소의 등장 횟수와 값을 찾는다.

 

        for (j = i + 1; j < n; j++) {
            if (strcmp(input[i], input[j]) == 0) {
                count[i]++;
            }
        }
    }

 

- 각 문자열이 몇 번 등장하는지를 센 후, 해당 값을 count 배열에 저장한다.

 

    for (i = 0; i < n; i++) {
        if (count[i] > max_count) {
            max_count = count[i];
            strcpy(mode, input[i]);
        }
    }

 

- count 배열에서 가장 큰 값을 찾아 max_count에 저장하고, 해당 인덱스의 input 값을 mode에 복사한다.

 


 입력한 값은 n에 저장되고 n번 만큼 입력된 데이터는 `input` 배열에 저장된다. 이중 반복문을 통해 외부 반복문의 현재 인덱스(i) 다음부터 배열의 끝까지를 확인하여 중복을 찾고 중복을 찾으면 해당 요소의 등장 횟수를 증가시킨다.
모든 문자열의 등장 횟수가 계산되면, max_count 변수를 사용하여 가장 많이 등장한 횟수를 추적한다.

반응형

'정보처리,전산 > Clang' 카테고리의 다른 글

비트연산  (0) 2024.06.22
call by reference  (0) 2024.06.16
랜덤 숫자 발생 후 입력 값 존재 유무 찾기  (0) 2024.05.29
배열 포인터  (0) 2024.04.08
(함수의 구조, 선언) 1~100까지의 합, 구구단  (0) 2024.03.31