SPRING :: NOTE

[C] 번갈아가며 문자열을 만드는 프로그램 작성 본문

Development Language/C · C++ · MFC

[C] 번갈아가며 문자열을 만드는 프로그램 작성

RAYZIE 2023. 4. 25. 15:37
반응형
# 문제 설명
 - 길이가 같은 두 문자열 str1과 str2가 주어진다.
 - 두 문자열의 각 문자가 앞에서부터 서로 번갈아가며 
   한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성

# 제한사항
 - 1 ≤ str1의 길이 = str2의 길이 ≤ 10
 - str1과 str2는 알파벳 소문자로 이루어진 문자열입니다.
 
# 입출력 예
 - str1		str2		result
 - "aaaaa"	"bbbbb"		"ababababab"
#include <stdio.h>
#include <string.h>

char* mixStrings(char* str1, char* str2) {
    int length = strlen(str1);
    char* mixed = (char*) malloc((length * 2 + 1) * sizeof(char)); // 결과 문자열 할당
    int i;

    for (i = 0; i < length; i++) {
        mixed[i * 2] = str1[i]; // str1의 i번째 문자를 mixed의 i*2번째 인덱스에 대입
        mixed[i * 2 + 1] = str2[i]; // str2의 i번째 문자를 mixed의 i*2+1번째 인덱스에 대입
    }

    mixed[length * 2] = '\0'; // mixed의 끝에 null 문자 추가

    return mixed;
}

int main() {
    char str1[] = "aaaaa";
    char str2[] = "bbbbb";
    char* result = mixStrings(str1, str2);

    printf("%s\n", result);

    free(result); // 동적 할당한 메모리 해제

    return 0;
}

위 코드에서는 문자열 str1과 str2를 받아서 두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 반환하는 mixStrings 함수를 구현하였다.

우선 str1과 str2의 길이를 구한 후, 두 문자열에서 대응하는 문자를 번갈아가며 mixed 문자열에 저장하였다.

이때 mixed 문자열은 결과 문자열을 저장하는 용도로 사용된다.

mixed 문자열의 길이는 str1과 str2의 길이를 합친 것과 같으며, null 문자를 포함하여 길이를 계산하였다.

마지막으로 mixed 문자열의 끝에 null 문자를 추가하여 문자열의 끝임을 알리고, mixed 문자열을 반환한다.

메인 함수에서는 예시로 주어진 문자열 "aaaaa"와 "bbbbb"를 인자로 넣어 mixStrings 함수를 호출하였다.

이후 mixStrings 함수가 반환한 문자열을 출력하고, 동적으로 할당한 메모리를 해제하였다.

반응형
Comments