7월 4주차 과제 : 문제 3_배열 자르기

2023. 7. 30. 17:41Algorithm ( p & swlug )/Programmers

7월 4주차 과제는 다음과 같다.

1. 배열의 평균값
2. 배열 뒤집기
3. 배열자르기

마지막 문제이다.

마지막 문제도 동적메모리를 할당받아야한다.

흠.. 이 부분은 따로 공부가 더 필요할 것같다.

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int* solution(int numbers[], size_t numbers_len, int num1, int num2) {
    // 자른 부분 배열의 길이 계산
    size_t sub_array_len = num2 - num1 + 1;
    
    // 동적 할당을 사용하여 자른 부분 배열 생성
    int* answer = (int*)malloc(sub_array_len * sizeof(int));
    
    // numbers 배열의 num1번째 인덱스부터 num2번째 인덱스까지의 부분 배열을 answer에 복사
    for (int i = num1; i <= num2; i++) {
        answer[i - num1] = numbers[i];
    }
    
    return answer;
}

int main() {
    int numbers[] = {1, 2, 3, 4, 5}; // 예시 입력 배열
    size_t numbers_len = sizeof(numbers) / sizeof(numbers[0]);
    int num1 = 1; // 자를 시작 인덱스 (0부터 시작)
    int num2 = 3; // 자를 끝 인덱스 (0부터 시작)

    int* result = solution(numbers, numbers_len, num1, num2);

    // 결과 출력 (자른 부분 배열)
    for (int i = 0; i < num2 - num1 + 1; i++) {
        printf("%d ", result[i]);
    }

    // 동적으로 할당한 메모리 해제
    free(result);
    return 0;
}

두번째 문제와 마찬가지로 시간이 부족해서 스스로 푸는데는 어려움이 있었고,

찾아봐서 해결은 했지만, 스스로 더 고민이 필요하고 공부해야할 것같다.

반복문을 이용해 배열의 요소를 복사하고 인덱스를 이용해 잘라야한다는 것 까지만 생각했다..

추후에 추가로 공부해서 설명을 더 넣어야겠다.😂