강의로 돌아가기
김진겸

c언어 5번 케이스 틀리는 이유?

이 코드로 작성하였는데 5번 케이스만 틀리네요... 이유 좀 알 수 있을까요?

작성중인 코드―solution.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int ar[], size_t array_len) {
    int answer = 0;
    int temp,i,j;
    for(i = 0; i < array_len; i++){
        for(j = 1; j < array_len; j++){
            if(ar[i] > ar[j]){
                temp = ar[i];
                ar[i] = ar[j];
                ar[j] = temp;
            }

        }
    }
    answer = ar[(array_len/2)+(array_len%2)];
    return answer;
}
2 개의 답변
audrms950@gmail.com

예외처리 때문 입니다! 길이가 1일때 ar[(arraylen/2)+(arraylen%2)]; 이 아니라 해당 숫자를 반환 해주셔아 합니다!
아래 조건만 달아주시면 무사 통과 됩니다!
answer = arraylen != 1 ? ar[(arraylen/2)+(array_len%2)] : ar[0];

dronecyber

//include
//include
//include

// arraylen은 배열 array의 길이입니다.
int solution(int array[], size
t arraylen) {
int answer = 0;
for(int i=0; ilen; i++){
int minidx = i;
for(int j=i+1; j array[j]){
minidx = j;
}
}
int temp = array[minidx];
array[minidx] = array[i];
array[i] = temp;
}

if(array_len % 2 == 0){
    answer = array[array_len / 2 - 1];
}else{
    answer = array[array_len / 2];
}

printf("%d\n", answer);
return answer;

}

int main(void) {
int arr[5] = {1, 2, 7, 10, 11};
int result = solution(arr, 5);

printf("중간 인덱스: %d\n", result);

return 0;

}

예시코드입니다.

답변 쓰기
This input form supports markdown syntax. Please refer to 마크다운 가이드.