great minds think alike
[C] 프로그래머스 스쿨_7주차 문제 1: 배열 원소의 길이 본문
[1] 문제
문제 설명
문자열 배열 strlist가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ strlist 원소의 길이 ≤ 100
- strlist는 알파벳 소문자, 대문자, 특수문자로 구성되어 있습니다.
입출력 예
strlist | result |
["We", "are", "the", "world!"] | [2, 3, 3, 6] |
["I", "Love", "Programmers."] | [1, 4, 12] |
입출력 예 설명
입출력 예 #1
- ["We", "are", "the", "world!"]의 각 원소의 길이인 [2, 3, 3, 6]을 return합니다.
입출력 예 #2
- ["I", "Love", "Programmers."]의 각 원소의 길이인 [1, 4, 12]을 return합니다.
[2] 정답 및 해석
#.1 정답 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <stdio.h> #include <stdbool.h> #include <stdlib.h> #include <string.h> int* solution(const char* strlist[], size_t strlist_len) { int* answer = (int*)malloc(strlist_len * sizeof(int)); // 길이 배열 할당 // 각 문자열의 길이를 계산하여 배열에 저장하는 과정 for (size_t i = 0; i < strlist_len; ++i) { answer[i] = strlen(strlist[i]); // 각 문자열의 길이를 계산하여 배열에 저장 } return answer; // 길이가 저장된 배열을 반환 } | cs |
#.2 해석
위 코드는 문자열 배열 strlist의 각 원소의 길이를 계산하여 배열에 저장하고, 그 배열을 반환하는 함수를 정의하고 있다.
1. #include 문: 이 코드는 표준 입출력 및 문자열 처리를 위해 필요한 헤더 파일들을 포함하고 있다.
2. int* solution(const char* strlist[], size_t strlist_len): solution 함수는 정수형 포인터를 반환하는 함수로, 입력으로 문자열 배열 strlist와 그 배열의 길이 strlist_len이 주어진다.
3. int* answer = (int*)malloc(strlist_len * sizeof(int));: 문자열의 길이를 저장할 정수 배열 answer를 동적 할당하여 생성한다. strlist_len * sizeof(int)는 strlist_len 개의 정수가 들어갈만한 메모리 공간을 할당하라는 의미이다.
4. for (size_t i = 0; i < strlist_len; ++i) { ... }: for 루프를 통해 각 문자열의 길이를 계산하여 배열에 저장하는 부분을 정의한다. i는 0부터 시작하여 strlist_len - 1까지 순회한다.
5. answer[i] = strlen(strlist[i]);: strlen 함수를 사용하여 strlist의 i번째 문자열의 길이를 계산하고, 그 길이를 answer 배열의 i번째 요소에 저장한다.
6. return answer;: 길이가 저장된 배열인 answer를 반환합니다. 이렇게 해서 문자열 배열의 각 원소의 길이가 저장된 배열이 반환된다.
[3] 추가 학습
✏️ https://exponent.tistory.com/88
[C] Study: 동적 메모리 - (1) 동적 할당 메모리란?
(1) 동적 할당 메모리란? • 프로그램이 메모리를 할당받는 방법에는 정적(static)과 동적(dynamic)의 두 가지 방법이 있다. • 정적 메모리 할당: 프로그램이 시작되기 전에 미리 정해진 크기의 메모
exponent.tistory.com
✏️ https://exponent.tistory.com/89
[C] Study: 동적 메모리 - (2) malloc()과 free()
(2) malloc()과 free() • 동적 메모리 할당 절차에 대해 알아보자. • 동적 메모리 할당은 도서관에서 책을 빌리는 절차와 비슷하다. 도서관에서는 필요한 책을 신청하고 책이 준비되면 받아오는 단
exponent.tistory.com
✏️ 정답으로는 인정되었지만, 주의할 점이 있다.
1. 메모리 해제: 코드에서 동적으로 할당한 메모리를 해제하는 부분이 누락되어 있습니다. 함수가 끝난 후에는 할당한 메모리를 반드시 free 함수를 사용하여 해제해야 합니다. 이를 처리하지 않으면 메모리 누수가 발생할 수 있습니다.
2. 메모리 할당 실패 체크: malloc 함수는 메모리 할당에 실패할 경우 NULL을 반환합니다. 이 코드에서는 메모리 할당 실패 시에 대한 처리가 없으므로, 메모리 할당이 제대로 이루어졌는지 체크하는 것이 좋습니다.
출처: 챗 GPT
[4] 느낀 점
동적 메모리 할당... 많이 해봐야 늘겠지? 개념도 생소하고 사용하기도 어렵다.
'SWLUG > 프로그래머스 스쿨 (C)' 카테고리의 다른 글
[C] 프로그래머스 스쿨_1주차 과제 문제: 공배수 (0) | 2024.03.23 |
---|---|
[C] 프로그래머스 스쿨_1주차 과제 문제: n의 배수 (0) | 2024.03.23 |
[C] 프로그래머스 스쿨_7주차 문제 3: 삼각형의 완성 조건 (1) (0) | 2023.08.20 |
[C] 프로그래머스 스쿨_7주차 문제 2: 아이스 아메리카노 (0) | 2023.08.20 |
[C] 프로그래머스 스쿨_6주차 문제 3: 중앙값 구하기 (0) | 2023.08.11 |