Menu
Coddy logo textTech

요약: 동적 배열

Coddy C 여정의 Logic & Flow 섹션에 포함된 레슨 — 63개 중 37번째.

challenge icon

챌린지

쉬움

사용자 입력을 기반으로 동적 배열을 생성하고, 데이터를 처리하며, 올바른 메모리 관리 방법을 보여주는 C 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:

  1. 사용자로부터 저장할 요소의 개수를 나타내는 정수 n을 읽습니다.
  2. sizeof()와 함께 malloc()을 사용하여 n개의 정수를 저장할 배열을 위한 메모리를 동적으로 할당합니다.
  3. 메모리 할당이 성공했는지 확인합니다. 실패할 경우, Memory allocation failed!를 출력하고 프로그램을 종료합니다.
  4. 할당에 성공하면, Array of size [n] created successfully!를 출력합니다.
  5. 사용자로부터 n개의 정수 값을 읽어 할당된 배열에 저장합니다.
  6. 모든 요소의 합계를 계산하고 Sum: [value] 형식으로 출력합니다.
  7. 최솟값을 찾아 Minimum: [value] 형식으로 출력합니다.
  8. 평균보다 큰 요소의 개수를 세고 Elements above average: [count] 형식으로 출력합니다.
  9. 사용된 총 메모리를 바이트 단위로 Memory used: [bytes] bytes 형식으로 출력합니다.
  10. free()를 사용하여 메모리 할당을 해제합니다.
  11. 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;
}

Logic & Flow의 모든 레슨