티스토리 뷰
문제
단어들이 들어있는 배열에서 길이가 5 이상인 단어를 배열에 들어있는 순서대로 이어 붙이려 합니다.
예를 들어 배열이 다음과 같은 경우
["my","favorite","color","is","violet"]
"favoritecolorviolet"을 만들면 됩니다.
단어들이 들어있는 배열 words와 words의 길이 words_len이 solution함수의 매개변수로 주어질 때, 길이가 5 이상인 단어를 순서대로 이어 붙인 문자열을 return하도록 solution함수를 완성해주세요.
주어진 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
char* solution(char* words[], int words_len) {
char* answer = "";
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);
}
조건
길이가 5 이상인 단어를 순서대로 이어 붙여 return 해주세요.
만약 return할 문자열이 빈 문자열이면 "empty"를 return 해주세요.
예시
N | M | return |
["my","favorite","color","is","violet"] | 5 | "favoritecolorviolet" |
["yes","i","am"] | 3 | "empty" |
완성 코드
더보기
더보기
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
char* solution(char* words[], int words_len) {
char* answer = "";
int count = 0;
answer = (char*)malloc(sizeof(int) * (words_len));
for (int i = 0; i < words_len; i++) {
if (strlen(words[i]) >= 5) strcat(answer, words[i]);
else count++;
}
if (count == words_len) 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);
}
코드분석
단계 | 과정 |
main | 각 단어가 들어있는 배열 words1/words2와 그 길이 words_len1/words_len2를 정의하고, solution함수를 호출한다. |
solution | main에서 정의한 배열의 길이에 따라 solution에서 return해야하는 배열의 메모리크기가 달라지기 때문에 words_len에 맞추어 결과값문자열 answer의 길이를 동적할당한다.(malloc사용) 글자의 수가 5개를 넘지 않는 단어의 개수를 구하기 위한 변수 count를 선언한다. |
for | strlen()함수를 사용하여 words의 각 배열요소 문자열의 길이를 측정한다. 이때 길이가 5 이상일 경우, strcat()함수를 사용하여 해당 단어를 answer의 문자열과 연결한다. 5 미만일 경우 count++을 진행한다. +) strcat()함수는 #include<string.h>를 정의해야 사용 가능하다. |
solution | for문이 종료되면 count변수의 값을 측정하여 그 값(5글자를 넘지 않는 단어의 수)이 words_len과 같을경우 (words배열의 모든 단어가 5글자를 넘지 못했을 경우) 변수 answer에 "empty"를 할당한다. answer를 return한다. |
main | 결과를 출력한 후 프로그램을 종료한다. |
예시
N | M | return |
["my","favorite","color","is","violet"] | 5 | "favoritecolorviolet" |
["yes","i","am"] | 3 | "empty" |
goorm
구름은 클라우드 기술을 이용하여 누구나 코딩을 배우고, 실력을 평가하고, 소프트웨어를 개발할 수 있는 클라우드 소프트웨어 생태계입니다.
www.goorm.io
'[코테] > [GroomEdu]' 카테고리의 다른 글
[COS PRO 2급] 2차 5번_몬스터 공격하기 (C/C++) (0) | 2021.05.10 |
---|---|
[COS PRO 2급] 2차 6번_엘리베이터의 총 이동거리 구하기 (C/C++) (0) | 2021.05.10 |
[COS PRO 2급] 2차 3번_짝수들의 제곱의 합 구하기 (C/C++) (0) | 2021.05.09 |
[COS PRO 2급] 2차 2번_더 많은 배수 구하기 (C/C++) (0) | 2021.05.08 |
[COS PRO 2급] 2차 1번_최대한 많은 쌍의 장갑 갯수 구하기 (C/C++) (0) | 2021.05.08 |
댓글
공지사항
최근에 올라온 글
TAG
- 코딩테스트
- 배열활용문제
- COSPRO 2급
- 프로그래머스
- C++
- 연습문제
- 1급
- CosPro
- c언어 기출문제
- groom
- YBM
- groomedu
- 배열
- programmers
- C
- 구름에듀 기출문제
- 코스프로
- 기출문제
- cospro기출문제
- 알고리즘
- lv2
- 자바
- YBM기출
- Cos Pro
- lv1
- cospro기출
- Java
- c언어
- 구름 기출문제
- 구름에듀
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함