본문 바로가기
프로그래머스/C

[프로그래머스/C]프로그래머스 Level 1 : 문자열 내림차순으로 배치하기 C언어

by starfish22 2021. 12. 14.
728x90

▶문제 : 코딩 테스트 연습 - 문자열 내림차순으로 배치하기 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 문자열 내림차순으로 배치하기

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로

programmers.co.kr

 

▶코드 작성

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

// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char *solution(const char *s)
{
    // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
    char *answer = (char *)malloc(strlen(s) + 1);
    int max, temp;
    strcpy(answer, s);//s문자열 복사
    for (int i = 0; i < strlen(s) - 1; i++)//선택정렬 내림차순
    {
        max = i;
        for (int j = i + 1; j < strlen(s); j++)
        {
            if (answer[j] > answer[max])//큰 값 찾기
            {
                max = j;
            }
        }
        if (i != max)//같은 값이 아닐 때 바꾸기
        {
            temp = answer[i];
            answer[i] = answer[max];
            answer[max] = temp;
        }
    }
    return answer;
}

 

▶해석

알파벳 소문자의 십진수가 알파벳 대문자의 십진수보다 값이 크기 때문에, 알파벳 z부터 내림차순으로 정렬해야 하므로 선택 정렬 내림차순을 이용하였다.

728x90

댓글