내일배움캠프🔥/알고리즘 코드카타💬

[ 내일배움캠프 ] 알고리즘 코드 카타 31 💬

pseonu 2025. 4. 11. 20:25

문제 설명

길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.

제한 조건
  • n은 길이 10,000이하인 자연수입니다.
입출력 예

 

n return
3 "수박수"
4 "수박수박"

 

 

Solution

 

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

char* solution(int n) {
    char* answer = (char*)malloc(n * 3 + 1);
    char* ptr = answer;

    for (int i = 0; i < n; i++) {
        if (i % 2 == 0)
            memcpy(ptr, "수", 3); 
        else
            memcpy(ptr, "박", 3); 
        ptr += 3;
    }
    *ptr = '\0';

    return answer;
}

 

* strcat이나 strcpy를 쓰지 않고 memcpy를 이용 해보기위해 바이트 개념 이용. *

 

한글 한글자당 3바이트

malloc( n * 3 + 1 ) => 문자열 길이 = n, 한 글자당 3바이트 , 마지막에 널문자(\0) = +1

 

memcpy => 메모리 블록을 바이트로 복사함

ex) memcpy(ptr, "수", 3) = ptr위치에 "수"를 3바이트 복사함

 

ptr+=3 => 3바이트 이동시킴

 

*ptr= '\0' => 문자열 마지막에 널문자(\0) 삽입