SPRING :: NOTE

[C] 문자열을 겹쳐 출력하는 프로그램 작성 본문

Development Language/C · C++ · MFC

[C] 문자열을 겹쳐 출력하는 프로그램 작성

RAYZIE 2023. 4. 25. 15:33
반응형
# 문제 설명
 - 문자열 my_string, overwrite_string과 정수 s가 주어진다.
 - 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 
   문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성

# 제한사항
 - my_string와 overwrite_string은 숫자와 알파벳으로 이루어져 있습니다.
 - 1 ≤ overwrite_string의 길이 ≤ my_string의 길이 ≤ 1,000
 - 0 ≤ s ≤ my_string의 길이 - overwrite_string의 길이
 
# 입출력 예
 - my_string		overwrite_string	s	result
 - "He11oWor1d"		"lloWorl"		2	"HelloWorld"
 - "Program29b8UYP"	"merS123"		7	"ProgrammerS123"
#include <stdio.h>
#include <string.h>

char* solution(char* my_string, char* overwrite_string, int s) {
    int i, j;
    int overwrite_len = strlen(overwrite_string);
    int my_string_len = strlen(my_string);

    for(i=s, j=0; j<overwrite_len; i++, j++){
        my_string[i] = overwrite_string[j];
    }
    
    return my_string;
}

int main() {
    char my_string[1001], overwrite_string[1001];
    int s;

    scanf("%s %s %d", my_string, overwrite_string, &s);

    printf("%s\n", solution(my_string, overwrite_string, s));

    return 0;
}

먼저, solution 함수에서는 my_string 문자열에서 s번째 인덱스부터 overwrite_string의 길이만큼을 overwrite_string으로 대체한 새로운 문자열을 리턴한다.

이를 위해서, s번째 인덱스부터 overwrite_string의 길이만큼을 추출하기 위해 memcpy 함수를 사용하였다. 그리고 추출한 영역에 대해 overwrite_string을 복사하기 위해 strcpy 함수를 사용한다.

마지막으로, 변경된 문자열과 overwrite_string을 합치기 위해 strcat 함수를 사용한다.

예를 들어, my_string이 "He11oWor1d"이고 overwrite_string이 "lloWorl"이며, s가 2인 경우, "He11oWor1d"에서 인덱스 2부터 7까지 추출하면 "11oWor1"이 된다.

이후, 이 부분에 overwrite_string을 복사하여 "lloWorl"로 대체하면 "He" + "lloWorl" + "d" 가 되며, 이 문자열을 리턴한다.

반응형
Comments