#include <stdio.h>
#include <limits.h> // INT_MIN을 사용하기 위해 필요
// 배열과 그 크기를 인자로 받는 함수
int findMaxValue(const int arr[], size_t size) {
// 1. 엣지 케이스 처리 (Guard Clause)
// 배열이 비어있는 경우, 비정상적인 상황을 알리기 위해
// int의 가장 작은 값을 반환합니다.
if (size == 0) {
fprintf(stderr, "Error: The array is empty.\n");
return INT_MIN; // 혹은 에러 코드를 반환할 수 있음
}
// 2. 변수 초기화 (Robust Initialization)
// 0으로 초기화하면 모든 값이 음수일 때 제대로 동작하지 않습니다.
// 따라서 배열의 첫 번째 원소로 초기화하는 것이 안전합니다.
int max_value = arr[0];
// 3. 순회 및 비교 (Loop & Comparison)
// 첫 번째 원소는 이미 max_value에 있으므로, 두 번째 원소부터 순회합니다.
for (size_t i = 1; i < size; i++) {
if (arr[i] > max_value) {
max_value = arr[i]; // 더 큰 값을 만나면 갱신
}
}
return max_value;
}
int main() {
int numbers[] = {10, 5, 42, 17, 8, 99, 3};
size_t n = sizeof(numbers) / sizeof(numbers[0]);
int max = findMaxValue(numbers, n);
if (max != INT_MIN) {
printf("The maximum value is: %d\n", max);
}
int empty_arr[] = {};
size_t n_empty = 0;
findMaxValue(empty_arr, n_empty); // "Error: The array is empty." 출력
return 0;
}
ai가 짜보라고 시키니까 이렇게 나오는데
ai쪽 코딩이 논리적으로 더 단단한게
엣지케이스 if(size==0) 이게 있으니까 원소 있는 배열뿐만 아니라 null 들어와도 방어하고
int max_value=0; 초기화같은 실수도 없고
그리고 만약 처음하면
i=0부터 할테니 첫번째 원소는 생략하고
궁금해서 AI 코딩 보니 확실히 AI 코딩인게 티가 확날정도로 모범적인 방어 코드가 보인다
아 옛날 생각이 납니다..
알파고 vs 사람ㅇㅅㅇ