티스토리 뷰

 

 

 

문제설명

단체 유니폼을 주문하려고 합니다. 사람들의 덩치를 수치로 표현할 때 주문해야 하는 유니폼의 사이즈는 다음과 같습니다.

덩치 사이즈
95 미만 S
95 이상 100 미만 M
100 이상 105 미만 L
105 이상 XL

 

사람들의 덩치를 담은 배열 people, people의 길이 people_len이 매개변수로 주어질 때, 주문해야 하는 유니폼 사이즈의 수를 [S,M,L,XL]순으로 배열에 담아 return하도록 solution함수를 작성해주세요.

 

 

 


 

매개변수 설명

사람들의 덩치를 담은 배열 people, people의 길이 people_len이 매개변수로 주어집니다.

  • people_len은 1이상 100이하인 자연수입니다.
  • 사람들의 덩치는 80 이상 120 이하인 자연수입니다.

예시

people people_len return
[97, 102, 93, 100, 107] 5 [1,1,2,1]

 

 

 

 


 

 

 

 

주어진 코드

더보기
더보기
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int* solution(int people[], int people_len) {
    int *answer = (int *) malloc(sizeof(int) * 4);
    memset(answer, 0, sizeof(int) * 4);
    
    	//빈칸
    
    return answer;
}
int main() {
    int people[] = {97, 102, 93, 100, 107};
    int people_len = 5;
    int *ret = solution(people, people_len);

    printf("solution 함수의 반환 값은 [");
    for(int i = 0; i < 4; i++) {
        if(i != 0)
            printf(", ");
        printf("%d", ret[i]);
    }
    printf("] 입니다.\n");
}

 

 

 

 

 

완성 코드

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int* solution(int people[], int people_len) {
    int *answer = (int *) malloc(sizeof(int) * 4);
    memset(answer, 0, sizeof(int) * 4);
    for(int i=0;i<people_len;i++){
      if(people[i]<95) answer[0]++;
      else if(people[i]<100) answer[1]++;
      else if(people[i]<105) answer[2]++;
      else answer[3]++;
	}
    return answer;
}
int main() {
    int people[] = {97, 102, 93, 100, 107};
    int people_len = 5;
    int *ret = solution(people, people_len);

    printf("solution 함수의 반환 값은 [");
    for(int i = 0; i < 4; i++) {
        if(i != 0)
            printf(", ");
        printf("%d", ret[i]);
    }
    printf("] 입니다.\n");
}

 

 

 

 

 

 

코드 분석

단계 과정
main 사람들의 덩치를 담은 배열 people과 그 길이를 선언한다.
포인터변수 ret(return값이 배열이기 때문)을 선언하고 solution함수를 호출한다.
solution malloc를 사용하여 return값 answer의 메모리를 동적할당하고, memset함수를 이용하여
answer의 메모리를 0으로 세팅한다.
이때 answer에는 사이즈(순서대로 S,M,L,XL)별 티셔츠 갯수가 들어간다.
solution - for 사람의 수만큼 for문을 반복시킨다.
people[i]값에는 사람들의 덩치값이 들어있다. 이때 if - else if문을 사용하여
각 사이즈의 범위별로 answer의 각 방을 ++한다.

예를 들어 people[i]의 값이 102라면, else if(people[i]<105)문에서 answer[2]++;이 진행된다.
이때 answer[2]는 L사이즈의 티셔츠 갯수를 세는 방이다.
solution 배열 answer를 return한다.
main ret(solution의 answer배열과 동일)값을 출력하고 프로그램을 종료한다.

 

 

 

 

 


 

 

GroomEdu

 

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

YBM IT에서 시행하는 COS Pro 자격증 기출문제를 직접 풀어볼 수 있는 실습 위주의 강좌입니다.

edu.goorm.io

 

 

댓글