문제 설명
길이가 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) 삽입
'내일배움캠프🔥 > 알고리즘 코드카타💬' 카테고리의 다른 글
[ 내일배움캠프 ] 알고리즘 코드 카타 32 💬 (0) | 2025.04.25 |
---|---|
[ 내일배움캠프 ] 알고리즘 코드 카타 26~30 💬 (0) | 2025.01.22 |
[ 내일배움캠프 ] 알고리즘 코드 카타 21~25 💬 (0) | 2025.01.20 |
[ 내일배움캠프 ] 알고리즘 코드 카타 16~20 💬 (0) | 2025.01.02 |
[ 내일배움캠프 ] 알고리즘 코드 카타 11~15 💬 (0) | 2024.12.26 |