▶ 문제
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
- 제한 사항 -
str은 길이 1 이상인 문자열입니다.
▶ 소스코드
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 비교 함수: 문자를 내림차순으로 정렬 (대문자는 소문자보다 작게 취급)
int compare(const void* a, const void* b) {
char char_a = *(char*)a;
char char_b = *(char*)b;
// 소문자와 대문자 구분하여 정렬
if (char_a < char_b) return 1;
if (char_a > char_b) return -1;
return 0;
}
char* solution(const char* s) {
// 주어진 문자열의 길이 구하기
int len = strlen(s);
// 문자열을 동적 할당하여 복사
char* answer = (char*)malloc((len + 1) * sizeof(char));
strcpy(answer, s);
// 문자열을 내림차순으로 정렬
qsort(answer, len, sizeof(char), compare);
// 정렬된 문자열 반환
return answer;
}