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

[No.53] 6차 문제 3 / cos pro 2급 c언어 기출 문제

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

6차 문제 3 


문제 설명

 

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

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


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


예시

 

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

코드 해석 및 전체 코드

 

반환할 값은 주문해야 하는 유니폼 사이즈의 개수가 담긴 배열이다. 

배열로 넘겨야 하기 때문에 answer를 포인터 변수로, 4개의 길이로 잡는다. (사이즈 : S, M, L, XL)

for문은 people_len만큼 반복하여 덩치에 맞는 사이즈의 수를 구한다. 

if문 첫번째 조건은 덩치가 105 이상으로, 조건에 맞으면 XL인 answer[3]을 1 증가한다. 

if문 두 번째 조건은  덩치가 100 이상 105 미만(100 <= people [i] < 105)으로, 조건에 맞으면 L인 answer[2]을 1 증가한다. 

if문 세 번째 조건은 덩치가 95 이상 100 미만(95 <= people [i] < 100)으로, 조건에 맞으면 M인 answer[1]을 1 증가한다.

모든 조건에 맞지 않는다면(95 이상이 아니라면) 95 미만으로, S인 answer[0]을 1 증가한다. 

(조건을 반대로 해도 무관) 

i people[i] 조건 answer
0 97 95 <= 97 < 100
M
answer[1]++
1 102 100 <= 102 < 105
L
answer[2]++
2 93 93 < 95
S
answer[0]++
3 100 100 <= 100 < 105
L
answer[2]++
4 107 105 <= 107
XL
answer[3]++

따라서 answer는 [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);
    
    for (int i = 0; i < people_len; i++) {
        if (people[i] >= 105) answer[3]++;
        else if (people[i] >= 100) answer[2]++;
        else if (people[i] >= 95) answer[1]++;
        else answer[0]++;
    }

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

cos pro 2급 기출문제

github

 

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

 

반응형

댓글