코딩 테스트/[c언어] cos pro 2급 기출문제
[No.14] 5글자 이상인 단어 배열하기 / cos pro 2급 c언어 기출 문제
M개발자
2021. 5. 9. 22:20
반응형
5글자 이상인 단어 배열하기
문제 설명
단어들이 들어있는 배열에서 길이가 5 이상인 단어를 배열에 들어있는 순서대로 이어 붙이려 합니다.
예시 설명 참고
길이가 5 이상인 단어를 순서대로 이어 붙인 문자열을 return 하도록 solution 함수를 완성하세요.
예시
words | words_len | return |
["my", "favorite", "color", "is", "violet"] | 5 | "favoritecolorviolet" |
["yes", "i", "am"] | 3 | "empty" |
예시 설명
예 1.
길이가 5 이상인 단어는 "favorit", "color" , "violet"입니다.
이를 배열에 들어있는 순서대로 이어 붙이면 "favoritcolorviolet"이 됩니다.
예 2.
길이가 5 이상인 단어가 없으므로 "empty"가 return 됩니다.
코드 해석 및 전체 코드
동적 할당 주기
answer = (char*)malloc(sizeof(char) * words_len);
(char*) | malloc의 반환형이 void* 이므로 (char*) 형태로 형변환 |
||
sizeof(char) | sizeof()는 괄호 안에 자료형 타입을 바이트로 연산해주는 연산자 |
||
sizeof(char) * words_len | words 사이즈가 가지고 있는 동일한 크기의 메모리 할당 |
for) 0 ~ words_len - 1까지 반복
if in for) words[i]의 문자열 길이가 5 이상이면 answer에 words[i]의 값 이어 붙이기
if) answer의 문자열 길이가 0이면 answer의 값 empty
string 클래스
#include <string.h>
strlen | 문자열의 길이 구하는 함수 | strlen(words[0]) | 2 |
strcat | 문자열 이어 붙이는 함수 | strlen(answer, words[0]) strlen(answer, words[1]) |
my myfavorite |
words[0] = "my", words[1] = "favorite"
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
char* solution(char* words[], int words_len) {
char* answer = "";
answer = (char*)malloc(sizeof(char) * words_len);
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);
}
[2차] 문제 4) 5글자 이상인 단어 배열하기구하기
구름 goormedu COS PRO 2급 기출문제 - C언어
반응형