반응형
#문제4 단어들이 들어있는 배열에서 길이가 5 이상인 단어를 배열에 들어있는 순서대로 이어 붙이려 합니다.
예를 들어 배열이 다음과 같은 경우
["my", "favorite", "color", "is", "violet"]
"favoritecolorviolet"을 만들면 됩니다.
단어들이 들어있는 배열 words와 words의 길이 words_len이 solution 함수의 매개변수로 주어질 때, 길이가 5 이상인 단어를 순서대로 이어 붙인 문자열을 return 하도록 solution 함수를 완성해주세요.
#####매개변수 설명 단어들이 들어있는 배열 words와 words의 길이 words_len이 solution 함수의 매개변수로 주어집니다.
- words_len은 1 이상 100 이하의 자연수입니다.
- words에 들어있는 각 단어의 길이는 1 이상 10 이하이며, 알파벳 소문자로만 이루어져 있습니다.
#####return 값 설명 길이가 5 이상인 단어를 순서대로 이어 붙여 return 해주세요.
- 만약 return 할 문자열이 빈 문자열이면 "empty"를 return 해주세요.
#####예시
words words_len return
["my", "favorite", "color", "is", "violet"] | 5 | "favoritecolorviolet" |
["yes", "i", "am"] | 3 | "empty" |
#####예시 설명 예시 #1 길이가 5 이상인 단어는 "favorite", "color", "violet" 입니다. 이를 배열에 들어있는 순서대로 이어 붙이면 "favoritecolorviolet"이 됩니다.
예시 #2 길이가 5 이상인 단어가 없으므로 "empty"를 return 하면 됩니다.
문제
// 다음과 같이 include를 사용할 수 있습니다.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
char* solution(char* words[], int words_len) {
// 여기에 코드를 작성해주세요.
// 반환하는 문자열은 malloc을 이용해 주세요.
char* answer = "";
return answer;
}
// 아래는 테스트케이스 출력을 해보기 위한 main 함수입니다.
int main() {
char* words1[5] = {"my", "favorite", "color", "is", "violet"};
int words_len1 = 5;
char* ret1 = solution(words1, words_len1);
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
printf("solution 함수의 반환 값은 %s 입니다.\\n", ret1);
char* words2[3] = {"yes", "i", "am"};
int words_len2 = 3;
char* ret2 = solution(words2, words_len2);
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
printf("solution 함수의 반환 값은 %s 입니다.\\n", ret2);
}
정답
// 다음과 같이 include를 사용할 수 있습니다.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
char* solution(char* words[], int words_len) {
char* answer = (char*)malloc(sizeof(char)*words_len*10+1);
answer[0] = 0;
for(int i=0; i<words_len; i++){
if(strlen(words[i]) >= 5){
strcat(answer, words[i]);
}
}
if(strlen(answer) == 0) answer = "empty";
return answer;
}
int main() {
char* words1[5] = {"my", "favorite", "color", "is", "violet"};
int words_len1 = 5;
char* ret1 = solution(words1, words_len1);
printf("solution 함수의 반환 값은 %s 입니다.\\n", ret1);
char* words2[3] = {"yes", "i", "am"};
int words_len2 = 3;
char* ret2 = solution(words2, words_len2);
printf("solution 함수의 반환 값은 %s 입니다.\\n", ret2);
}
몰랐던 부분
- strlen: 주어진 문자열의 길이를 반환합니다. 여기서 문자열의 길이는 종결 널 문자('\0')를 제외한 문자의 개수입니다.
- strcat: 두 문자열을 연결합니다. 첫 번째 문자열의 끝에 두 번째 문자열을 복사하여 두 문자열을 하나로 합칩니다.
- char* answer = (char*)malloc(sizeof(char)words_len10+1);
- words_len 워드의 길이만큼 곱해주고 10을 곱해주고 +1을 더 해줘야한다 그래야 메모리 길이가 부족하지 않다.
반응형
'Cos Pro 2급' 카테고리의 다른 글
Cos Pro 2급 2차_문제6번 C언어 (0) | 2024.03.30 |
---|---|
Cos Pro 2급 2차_문제5번 C언어 (0) | 2024.03.29 |
Cos Pro 2급 2차_문제3번 C언어 (0) | 2024.03.29 |
Cos Pro 2급 2차_문제2번 C언어 (0) | 2024.03.29 |
Cos Pro 2급 2차_문제1번 C언어 (0) | 2024.03.29 |