백준 [ALGORITHM] - 주사위 (1233)

2024. 1. 27. 11:58코딩/백준 [ALGORITHM]

반응형
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

int main() {
    int a, b, c;
    int result;

    scanf("%d %d %d", &a, &b, &c);

    int *arr1 = (int *)malloc(a * sizeof(int));
    int *arr2 = (int *)malloc(b * sizeof(int));
    int *arr3 = (int *)malloc(c * sizeof(int));
    int *value = (int *)malloc(a * b * c * sizeof(int));

    for (int i = 0; i < a; i++) {
        arr1[i] = i + 1;
    }
    for (int j = 0; j < b; j++) {
        arr2[j] = j + 1;
    }
    for (int q = 0; q < c; q++) {
        arr3[q] = q + 1;
    }

    int count = 0;
    for (int i = 0; i < a; i++) {
        for (int j = 0; j < b; j++) {
            for (int q = 0; q < c; q++) {
                value[count] = arr1[i] + arr2[j] + arr3[q];
                count++;
            }
        }
    }

    for (int i = 0; i < a * b * c - 1; i++) {
        for (int j = i + 1; j < a * b * c; j++) {
            if (value[j] < value[i]) {
                int temp = value[i];
                value[i] = value[j];
                value[j] = temp;
            }
        }
    }

    int current_value = value[0];
    int current_count = 1;
    int max_count = 1;
    int most_frequent = value[0];

    for (int i = 1; i < a * b * c; i++) {
        if (value[i] == current_value) {
            current_count++;
        } else {
            if (current_count > max_count || (current_count == max_count && value[i] < most_frequent)) {
                max_count = current_count;
                most_frequent = current_value;
            }
            current_value = value[i];
            current_count = 1;
        }
    }

    if (current_count > max_count || (current_count == max_count && current_value < most_frequent)) {
        most_frequent = current_value;
    }

    printf("%d\n", most_frequent);

    free(arr1);
    free(arr2);
    free(arr3);
    free(value);

    return 0;
}
반응형