

이번에도... 구현문제인데
memset은 처음 보는 거였다...!!
구글링을 해서 알아보는 단계를 거치고 코딩 테스트 문제를 풀기로 했다.
C, C++의 메모리를 초기화 해줄 수 있는 함수이다.
헤더 파일은 memory.h, string.h 둘 중 하나 사용해도 무관하다.
둘 다 이 함수를 포함
void memset(void ptr, int value, size_t num);
반환값 성공 -> ptr 반환, 반환값 실패 -> NULL 반환
그럼 저 문제에서 memset의 의미는
memset(answer, 0, sizeof(int) * 4);
answer를 시작주소로 모두 0으로 초기화, 그리고 int(4byte)로 4조각씩 쪼개겠다!
아마 옷의 사이즈가 네 개 있는데 그것을 담을 크기를 int로 네 개로 쪼개려나 보다~

--
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");
}
int* solution(int people[], int people_len) {
int *answer = (int *) malloc(sizeof(int) * 4);
memset(answer, 0, sizeof(int) * 4);
// 빈칸
return answer;
}
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* 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");
}
