발자취

[프로그래머스 Lv.1 / C언어] Day43. 수박수박수박수박수박수? 본문

코딩테스트/Daily Coding (C, C++)

[프로그래머스 Lv.1 / C언어] Day43. 수박수박수박수박수박수?

해린 2024. 7. 16. 00:27

2024. 07. 16 - 코딩테스트 스터디 Day43

 
 

01. 문제 설명

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

02. 제한사항

  • n은 길이 10,000이하인 자연수입니다.

 
 

03. 입출력 예

nreturn
3"수박수"
4"수박수박"

 
 

04. 풀이 및 답

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

char* solution(int n) {
    // 리턴할 값은 메모리를 동적 할당해주세요.
    char* answer = (char*)malloc(n * strlen("수"));
    strcpy(answer, "");
    
    for (int i = 1; i <= n; i++) {
        if (i % 2) strcat(answer, "수");
        else strcat(answer, "박");
    }
    
    return answer;
}

우선 "수"의 크기에 n을 곱한 만큼의 메모리 공간을 할당받은 뒤, 배열을 초기화한다. (초기화하지 않으면 쓰레기값이 들어가 오류 발생)
 
i가 1일 때부터 n이 될 때까지 반복문을 돌면서 i가 홀수면 answer의 맨 뒤에 "수"를, 짝수면 "박"을 이어 붙이도록 한다.
 

💎 strcat(문자열A, 문자열B) 함수💎
: 문자열A의 뒤에 문자열B를 이어 붙임.

 
 

정답!

 


끝~