[코테]/[Programmers Lv1]
[Programmers] Lv1_수박수박수박수박수박수? (C/JAVA)
Sky_
2021. 6. 8. 18:41
💻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