본 아티클의 내용은 다음 링크를 통해서 지속적으로 업데이트됩니다. 

 

## C 언어 가까운 값 알고리즘

 

가까운 값(NEAR) 알고리즘은 원본 데이터에서 대상 데이터와 가장 가까운 값을 찾는 알고리즘입니다. 이 알고리즘은 주로 데이터 검색에 사용됩니다.

 

C 언어로 구현된 가까운 값 알고리즘 예제 코드를 살펴보겠습니다.

// near_algorithm.c

// 가까운값(NEAR) 알고리즘 : 
// 주어진(원본) 데이터에서 대상(타겟) 데이터와 가장 가까운 값
// - (원본과 타겟의)차이값의 절대값의 최소값일 때의 원본 데이터
#include <stdio.h>
#include <limits.h>
#include <math.h>

void main(void) {
    //[1] Input
    int i = 0; int data[] = { 21, 15, 30, 45, 27 };
    int target = 31;        // 31과 가장 가까운값은? 
    int near = 0;           // 가장 가까운값이 담길 그릇
    int diff = 0;           // 차이값
    int min = INT_MAX;      // 차이값의 최소값을 저장
    
    //[2] Process  
    for (i = 0; i < 5; i++) {
        diff = data[i] - target;    // 차이값
        diff = abs(diff);           // 차이값의 절대값 
        if (min > diff) {           // 최소값        
            min = diff;             // 최소값 알고리즘 
            near = data[i];         // 차이값의 절대값의 최소값일때의 데이터
        }
    }
    
    //[3] Output
    printf("%d와 가장 가까운값 : %d\n", target, near);
}

 

```output

31와 가장 가까운값 : 30

```

 

먼저 입력 데이터는 배열 `data`와 대상 데이터 `target`로 구성됩니다. 여기서는 data 배열에 5개의 정수 값을 입력하였습니다. 이후에는 가장 가까운 값이 저장될 변수 `near`, 차이값이 저장될 변수 `diff`, 차이값의 최소값이 저장될 변수 `min`이 선언됩니다.

 

다음으로 `for` 반복문을 이용하여 각 원소의 차이값을 계산하고, 차이값이 가장 작은 값을 찾아 `near` 변수에 저장합니다. `abs()` 함수를 이용하여 차이값의 절대값을 계산하였습니다.

 

마지막으로 결과값인 대상 데이터 `target`과 가장 가까운 값인 `near`을 출력합니다.

 

이제 예제 코드를 실행해보겠습니다. 결과값으로는 31과 가장 가까운 30이 출력됩니다.

 

가까운 값 알고리즘은 간단하면서도 매우 유용한 알고리즘입니다.

 

Comments


Comments are closed