발자취
[프로그래머스 Lv.1 / C언어] Day45. 문자열 내림차순으로 배치하기 본문
2024. 07. 18 - 코딩테스트 스터디 Day45
01. 문제 설명
문자열 s에 나타나는 문자를 큰 것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해 주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
02. 제한사항
- str은 길이 1 이상인 문자열입니다.
03. 입출력 예
| s | return |
| "Zbcdefg" | "gfedcbZ" |
04. 풀이 및 답
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char* solution(const char* s) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
char* answer = (char*)malloc(strlen(s) + 1);
strcpy(answer, s);
for (int i = 0; i < strlen(s); i++) {
for (int j = i + 1; j < strlen(s); j++) {
if (answer[i] < answer[j]) {
int tmp = answer[i];
answer[i] = answer[j];
answer[j] = tmp;
}
}
}
return answer;
}s의 크기 + 1만큼의 공간을 동적 할당받는다 (strlen 함수는 문자열의 개수만을 반환하므로, +1을 해서 null 문자 공간까지 마련하는 것이다.)
answer에 s의 내용을 복사한다.
answer의 요소 하나하나를 비교하며 더 작은 문자를 뒤로 보내주면 된다.

정답!

끝
'코딩테스트 > Daily Coding (C, C++)' 카테고리의 다른 글
| [백준 / C언어] Day47. 날짜 계산 (1476) (0) | 2024.07.20 |
|---|---|
| [백준 / C언어] Day46. 사탕 게임 (3085) (0) | 2024.07.19 |
| [프로그래머스 Lv.1 / C언어] Day44. 내적 (0) | 2024.07.17 |
| [프로그래머스 Lv.1 / C언어] Day43. 수박수박수박수박수박수? (0) | 2024.07.16 |
| [백준 / C언어] Day42. 일곱 난쟁이 (2309) (0) | 2024.07.15 |