반응형

#문제5 주어진 배열의 순서를 뒤집으려고 합니다.

예를 들어 주어진 배열이 [1, 4, 2, 3]이면, 순서를 뒤집은 배열은 [3, 2, 4, 1]입니다.

정수가 들어있는 배열 arr와 arr의 길이 arr_len이 매개변수로 주어졌을 때, arr를 뒤집어서 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.


매개변수 설명

정수가 들어있는 배열 arr와 arr의 길이 arr_len이 solution 함수의 매개변수로 주어집니다.

  • arr_len은 1 이상 100 이하의 자연수입니다.
  • arr의 원소는 -100 이상 100 이하의 정수입니다.

return 값 설명

배열 arr의 순서를 뒤집어서 return 해주세요.


예시

arr arr_len return

[1, 4, 2, 3] 4 [3, 2, 4, 1]

예시 설명

[1, 4, 2, 3]을 뒤에서부터 읽으면 3, 2, 4, 1입니다. 따라서 [1, 4, 2, 3]의 순서를 뒤집은 결과는 [3, 2, 4, 1]이 됩니다.

문제

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

int* solution(int arr[], int arr_len) {
    int left = 0;
    int right = arr_len - 1;
    while(@@@){
        int temp = arr[left];
        arr[left] = arr[right];
        arr[right] = temp;
        left += 1;
        right -= 1;
    }
    return arr;
}

// The following is main function to output testcase.
int main() {
    int arr[4] = {1, 4, 2, 3};
    int arr_len = 4;
    int* ret = solution(arr, arr_len);

    // Press Run button to receive output. 
    printf("Solution: return value of the function is {");
    for(int i = 0; i < 4; i++){
        if (i != 0) printf(", ");
        printf("%d", ret[i]);
    }
    printf("} .\\n");
}

정답

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

int* solution(int arr[], int arr_len) {
    int left = 0;
    int right = arr_len - 1;
    while(left < right){
        int tmp = arr[left];
        arr[left] = arr[right];
        arr[right] = tmp;
        left += 1;
        right -= 1;
    }
    return arr;
}
반응형