가까운 값 모두 구하기
가까운 값(closest)이 여러 개 있을 때 이를 모두 구할 수 있습니다. 다음 코드를 살펴보세요.
가까운 값 모두 구하기: NearAll.cs
using System;
using System.Collections.Generic;
class NearAll
{
static void Main()
{
int[] data = { 10, 20, 23, 27, 17 };
int target = 25; //25와 가까운 값들은 23, 27
List<int> nears = new List<int>(); //가까운 값들...
int min = Int32.MaxValue;
//① MIN 알고리즘: 차이의 최솟값 구하기
for (int i = 0; i < data.Length; i++)
{
if (Math.Abs(data[i] - target) < min)
{
min = Math.Abs(data[i] - target);
}
}
Console.WriteLine($"차이의 최솟값 : {min}");
//② NEAR 알고리즘: 차이의 최솟값이 min인 값들을 다시 한 번 비교
for (int i = 0; i < data.Length; i++)
{
if (Math.Abs(data[i] - target) == min)
{
nears.Add(data[i]); //가까운 값을 모두 저장
}
}
//가까운 값 출력
foreach (var n in nears)
{
Console.WriteLine(n);
}
}
}
실행 결과
차이의 최솟값 : 2 23 27
25와 가까운 데이터인 23과 27을 모두 구해서 리스트에 넣은 후 출력하는 예제를 만들어 보았습니다.