C언어/주차별 문제

[12주차] 문자열 길이 정렬

슈슈버거 2023. 6. 14. 01:07

문제

 


내가 작성한 코드

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

int compare(const void *a, const void *b) {
    return strlen(*(char**)b) - strlen(*(char**)a);
}

int main() {
    int N;
    scanf("%d", &N);
    getchar();  

    char **arr = (char**)malloc(sizeof(char*) * N);  

    for (int i = 0; i < N; i++) {
        char input[101];
        char ch;
        int index = 0;

        while ((ch = getchar()) != '\n' && ch != EOF) {
            input[index++] = ch;
        }
        input[index] = '\0';

        arr[i] = (char*)malloc(sizeof(char) * (strlen(input)+1));
        strcpy(arr[i], input);
    }
    
    //길이별 정렬
    qsort(arr, N, sizeof(char*), compare);

    for (int i = 0; i < N; i++) {
        printf("%s\n", arr[i]);
    }

    for (int i = 0; i < N; i++) {
        free(arr[i]);
    }
    free(arr);

    return 0;
}