최빈값 구하기
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 |