티스토리 뷰

💻C언어 코드 바로보기

💻JAVA 코드 바로보기

 

 

문제 설명

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


제한사항

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

입출력 예

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

 


 

🌼C언어 알고리즘

 

초기화면

 

 

 

도전했던 방법 

answer[i] 방에 각각 '수' 또는 '박'을 할당한다.
=> 실행한 결괏값 ""이(가) 기댓값 "수박수"와(과) 다릅니다.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

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

 

 

 

완성 코드

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

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

 

이때 문자열 포인터 answer의 방 크기를 할당할때, sizeof(char)*글자의 갯수(n)*한글사이즈(2바이트)+널(/0)로 생각하여
(sizeof(char)*2*n+1)로 잡아주면, 아래와 같은 core dumped 가 발생한다.

이는 UTF-8에서 한글을 2바이트가 아닌 3바이트로 처리하기 때문이다.


🔗 char 포인터 메모리 크기 알아보기

 

 

 

 


🌼JAVA 알고리즘

 

초기화면

 

 

완성 코드

class Solution {
    public String solution(int n) {
        String answer = "";
        
        for(int i=0;i<n;i++){
            if(i%2==0) answer+="수";
            else answer+="박";
        }   
        
        return answer;
    }
}

 

 

 

 


링크

 

 

코딩테스트 연습 - 수박수박수박수박수박수?

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

programmers.co.kr

 

 

About Me

💻GitHub/KimSky904 KimSky904 - Overview Department of New Media Software. KimSky904 has 8 repositories available. Follow their code on GitHub. github.com

code-review.tistory.com

 

댓글