문제

내가 작성한 코드
#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;
}
'C언어 > 주차별 문제' 카테고리의 다른 글
[12주차] 동적 할당을 이용한 정수 입력 (0) | 2023.06.14 |
---|---|
[12주차] 동적 할당 응용 (0) | 2023.06.14 |
[12주차] 동적 할당 기초 (0) | 2023.06.14 |
[12주차] 배열의 최소값 모두 더하기(동적 할당) (0) | 2023.06.14 |
[11주차] 제일 긴 문자열 찾기 (0) | 2023.06.08 |