06
07

근삿값 알고리즘(Near Algorithm)

//[?] 원본 데이터 중에서 대상 데이터와 가장 가까운 값
using System;
using System.Linq;

/// <summary>
/// 근삿값 알고리즘(Near Algorithm): 차잇값의 절댓값의 최솟값
/// </summary>

class NearAlgorithm
{
    //[0] 절댓값 구하기 로컬 함수: Math.Abs() 함수의 동일한 기능을 구현해 봄
    static int Abs(int number)
    {
        if (number < 0)
        {
            return -number;
        }
        else
        {
            return number;
        }
    }

    static void Main()
    {

        //[1] Initialize
        int min = int.MaxValue; // 차잇값의 절댓값의 최솟값이 담길 그릇

        //[2] Input
        int[] numbers = { 10, 20, 30, 27, 17 };
        int target = 25; // target과 가까운 값
        int near = 0; // 가까운 값: 27

        //[3] Process: NEAR
        for (int i = 0; i < numbers.Length; i++)
        {
            int abs = Abs(numbers[i] - target); // 차잇값의 절댓값
            if (abs < min)
            {
                min = abs; // MIN: 최솟값 알고리즘
                near = numbers[i]; // NEAR: 차잇값의 절댓값의 최솟값일 때의 값
            }
        }

        //[4] Output
        Console.WriteLine($"{target}와 가장 가까운 값: {near}(차이: {min})");
    }
}

 

예제 실행 화면

 

COMMENT