티스토리 뷰

문제

 

A학교에서는 단체 티셔츠를 주문하기 위해 학생별로 원하는 티셔츠 사이즈를 조사했습니다. 선택할 수 있는 티셔츠 사이즈는 작은 순서대로 "XS","S","M","L","XL","XXL" 총 6종류가 있습니다.

학생별로 원하는 티셔츠 사이즈를 조사한 결과가 들어있는 배열 shirtsize와 shirtsize의 길이 shirtsizelen이 매개변수로 주어질 때, 사이즈별로 티셔츠가 몇 벌씩 필요한지 가장 작은 사이즈부터 순서대로 배열에 담에 return하도록 solution함수를 완성해주세요. 

 

 


 

 

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int* solution(char* shirt_size[], int shirt_size_len) {
	int* answer;
	int arr[6];
	answer=arr;
	for(int i=0;i<shirt_size_len;i++){
		if(shirt_size[i]=="XS") arr[0]++;
		else if(shirt_size[i]=="S") arr[1]++;
		else if(shirt_size[i]=="M") arr[2]++;
		else if(shirt_size[i]=="L") arr[3]++;
		else if(shirt_size[i]=="XL") arr[4]++;
		else if(shirt_size[i]=="XXL") arr[5]++;	
	}
	return answer;
}
int main() {
	char* shirt_size[] = {"XS", "S", "L", "L", "XL", "S"};
	int shirt_size_len = 6;
	int* ret = solution(shirt_size, shirt_size_len);

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

 


 

 

[코드해석]

main에서 초기화된 shirts_size 배열은 6명의 학생이 각각 신청한 사이즈가 들어있다.

이 배열의 값과 길이를 solution함수에 넘겨준다.

이때 배열은 Call By Pointer형식으로 넘겨준다.

 

포인터 answer에 사이즈 순서대로 신청된 개수를 저장할 배열 arr을 연결한다.

(이때 배열 arr에는 "XS","S","M","L","XL","XXL" 순서로 저장한다.)

for문을 이용하여 각각의 shirt_size 사이즈와 일치할때 arr++를 진행한다. ("XS" -> arr[0])

arr의 주소값이 저장된 answer를 return하며 main에서는 출력작업을 마무리한 후 프로그램이 종료된다.

 

 

댓글