프로그래머스코딩테스트연습풀이/C언어

[프로그래머스/C언어] 접미사 배열

코코쵸마 2023. 8. 14. 15:54

문제

어떤 문자열에 대해서 접미사는 특정 인덱스부터 시작하는 문자열을 의미합니다. 예를 들어, "banana"의 모든 접미사는 "banana", "anana", "nana", "ana", "na", "a"입니다.
문자열 my_string이 매개변수로 주어질 때, my_string의 모든 접미사를 사전순으로 정렬한 문자열 배열을 return 하는 solution 함수를 작성해 주세요.

솔루션

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

// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char** solution(const char* my_string) {
    // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
    char** answer = (char**)malloc(strlen(my_string) * sizeof(char*));
    for(int i = 0; i < strlen(my_string); i++)
        answer[i] = (char*)malloc(strlen(my_string) * sizeof(char));
    int n = 0;
    int m = 0;
    for(int i = 0; i < strlen(my_string); i++)
    {
        for(int j = i; j < strlen(my_string); j++)
            answer[n][m++] = my_string[j];
        answer[n][m] = '\0';
        n++;
        m = 0;
    }
    
    char* tmp;
    for(int i = 0; i < strlen(my_string) - 1; i++)
        for(int j = i + 1; j < strlen(my_string); j++){
            if(strcmp(answer[i], answer[j]) > 0)
            {
                tmp = answer[i];
                answer[i] = answer[j];
                answer[j] = tmp;
            }
        }
    return answer;
}

https://school.programmers.co.kr/learn/courses/30/lessons/181909

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr