요약: 동적 배열
Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 37번째.
챌린지
쉬움사용자 입력을 기반으로 동적 배열을 생성하고, 데이터를 처리하며, 올바른 메모리 관리 방법을 보여주는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:
- 사용자로부터 저장할 요소의 개수를 나타내는 정수
n을 읽습니다. sizeof()와 함께malloc()을 사용하여n개의 정수를 저장할 배열을 위한 메모리를 동적으로 할당합니다.- 메모리 할당이 성공했는지 확인합니다. 실패할 경우,
Memory allocation failed!를 출력하고 프로그램을 종료합니다. - 할당에 성공하면,
Array of size [n] created successfully!를 출력합니다. - 사용자로부터
n개의 정수 값을 읽어 할당된 배열에 저장합니다. - 모든 요소의 합계를 계산하고
Sum: [value]형식으로 출력합니다. - 최솟값을 찾아
Minimum: [value]형식으로 출력합니다. - 평균보다 큰 요소의 개수를 세고
Elements above average: [count]형식으로 출력합니다. - 사용된 총 메모리를 바이트 단위로
Memory used: [bytes] bytes형식으로 출력합니다. free()를 사용하여 메모리 할당을 해제합니다.Memory successfully freed!를 출력하여 적절한 정리가 이루어졌음을 확인합니다.
malloc()과 free()를 사용하기 위해 <stdlib.h> 헤더를 포함해야 함을 잊지 마세요. 이 챌린지는 할당부터 사용, 그리고 적절한 정리까지 동적 메모리 관리에 대한 전반적인 이해도를 테스트합니다.
예를 들어, 입력이 다음과 같다면:
5
12 8 15 3 20출력은 다음과 같아야 합니다:
Array of size 5 created successfully!
Sum: 58
Minimum: 3
Elements above average: 2
Memory used: 20 bytes
Memory successfully freed!이 종합적인 챌린지는 할당된 배열에 대해 의미 있는 데이터 처리 작업을 수행하면서 동적 메모리 관리의 전체 수명 주기를 보여줍니다.
직접 해보기
#include <stdio.h>
#include <stdlib.h>
int main() {
// 요소의 개수를 읽습니다
int n;
scanf("%d", &n);
// TODO: 아래에 코드를 작성하세요
// 1. malloc()을 사용하여 n개의 정수를 위한 메모리를 할당합니다
// 2. 할당이 성공했는지 확인합니다
// 3. n개의 정수를 배열로 읽어들입니다
// 4. 합계를 계산하고, 최솟값을 찾고, 평균보다 큰 요소의 개수를 셉니다
// 5. 결과를 출력하고 메모리를 해제합니다
return 0;
}