반응형
#문제1 A 학교에서는 단체 티셔츠를 주문하기 위해 학생별로 원하는 티셔츠 사이즈를 조사했습니다. 선택할 수 있는 티셔츠 사이즈는 작은 순서대로 "XS", "S", "M", "L", "XL", "XXL" 총 6종류가 있습니다.
학생별로 원하는 티셔츠 사이즈를 조사한 결과가 들어있는 배열 shirt_size와 shirt_size의 길이 shirt_size_len이 매개변수로 주어질 때, 사이즈별로 티셔츠가 몇 벌씩 필요한지 가장 작은 사이즈부터 순서대로 배열에 담아 return 하도록 solution 함수를 완성해주세요.
매개변수 설명
학생별로 원하는 사이즈를 조사한 결과가 들어있는 배열 shirt_size와 shirt_size의 길이 shirt_size_len이 solution 함수의 매개변수로 주어집니다.
- shirt_size_len은 1 이상 100 이하의 자연수입니다.
- shirt_size 에는 치수를 나타내는 문자열 "XS", "S", "M", "L", "XL", "XXL" 이 들어있습니다.
return 값 설명
티셔츠가 사이즈별로 몇 벌씩 필요한지 가장 작은 사이즈부터 순서대로 배열에 담아 return 해주세요.
- return 하는 배열에는 [ "XS" 개수, "S" 개수, "M" 개수, "L" 개수, "XL" 개수, "XXL" 개수] 순서로 들어있어야 합니다.
예시
shirt_size shirt_size_len return
["XS", "S", "L", "L", "XL", "S"] | 6 | [1, 2, 0, 2, 1, 0] |
예시 설명
- "XS"와 "XL"은 각각 한 명씩 신청했습니다.
- "S"와 "L"은 각각 두 명씩 신청했습니다.
- "M"과 "XXL"을 신청한 학생은 없습니다.
따라서 순서대로 [1, 2, 0, 2, 1, 0]을 배열에 담아 return 하면 됩니다.
문제
// You may use include as below.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int* solution(char* shirt_size[], int shirt_size_len) {
// Write code here.
int* answer;
return answer;
}
// The following is main function to output testcase.
int main() {
char* shirt_size[] = {"XS", "S", "L", "L", "XL", "S"};
int shirt_size_len = 6;
int* ret = solution(shirt_size, shirt_size_len);
// Press Run button to receive output.
printf("Solution: return value of the function is {");
for(int i = 0; i < 6; i++){
if (i != 0) printf(", ");
printf("%d", ret[i]);
}
printf("} .\\n");
}
정답
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
int* solution(char* shirt_size[], int shirt_size_len) {
int* size_counter = (int*)malloc(sizeof(int)*6);
for(int i = 0; i < 6; ++i)
size_counter[i] = 0;
for(int i = 0; i < shirt_size_len; ++i) {
if(strcmp(shirt_size[i],"XS") == 0)
size_counter[0]++;
else if(strcmp(shirt_size[i],"S") == 0)
size_counter[1]++;
else if(strcmp(shirt_size[i],"M") == 0)
size_counter[2]++;
else if(strcmp(shirt_size[i],"L") == 0)
size_counter[3]++;
else if(strcmp(shirt_size[i],"XL") == 0)
size_counter[4]++;
else if(strcmp(shirt_size[i],"XXL") == 0)
size_counter[5]++;
}
return size_counter;
}
몰랐던 부분
함수 **solution**의 시그니처를 보면 **int***과 char* shirt_size[] 두 가지 포인터가 나옵니다. 각각의 역할은 다음과 같습니다:
- int*: 이것은 함수의 반환 유형입니다. **int***은 정수를 가리키는 포인터를 나타냅니다. 이 함수는 정수형 포인터를 반환하는 것으로 정의되어 있으며, 반환된 포인터는 int 형식의 배열을 가리키게 됩니다.
- char* shirt_size[]: 이것은 함수의 매개변수입니다. **char* shirt_size[]**는 문자열을 가리키는 포인터 배열을 나타냅니다. 함수는 **shirt_size**라는 이름의 포인터 배열을 받으며, 각 포인터는 문자열을 가리키게 됩니다. 이 배열의 길이는 shirt_size_len 매개변수를 통해 전달됩니다.
strcmp(shirt_size[i],"XS") 에서도 strcmp 안에 2가지의 문자열을 비교해서 같다면 0을 반환 하는 것
반응형
'Cos Pro 2급' 카테고리의 다른 글
Cos Pro 2급 1차_문제6번 C언어 (0) | 2024.03.29 |
---|---|
Cos Pro 2급 1차_문제5번 C언어 (0) | 2024.03.29 |
Cos Pro 2급 1차_문제4번 C언어 (0) | 2024.03.29 |
Cos Pro 2급 1차_문제3번 C언어 (0) | 2024.03.29 |
Cos Pro 2급 1차_문제2번 C언어 (0) | 2024.03.29 |