본문 바로가기
코딩 테스트/[c언어] cos pro 2급 기출문제

[No.14] 5글자 이상인 단어 배열하기 / cos pro 2급 c언어 기출 문제

by M개발자 2021. 5. 9.
반응형

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);
}

cos pro 2급 기출문제

github

 

[2차] 문제 4) 5글자 이상인 단어 배열하기구하기

구름 goormedu COS PRO 2급 기출문제 - C언어

반응형

댓글