using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//[?] 근삿값 알고리즘: 원본 데이터 중에서 대상 데이터와 가장 가까운 값
//차잇값의 절댓값의 최솟값
namespace Project2
{
class Class1
{
static void Main(string[] args)
{
//절댓값 구하기 로컬 함수
int Abs(int number) => number<0 ? - number:number;
//[0]Initialize
int min = int.MaxValue; //차잇값의 절댓값의 최솟값이 담길 그릇
//[1]Input
int[] numbers = {10, 20, 30, 27, 17 };
int target = 25; //타겟과 가까운 값
int near = default; //근삿값
//[2]process
for(int i=0; i<numbers.Length; i++)
{
int abs = Abs(numbers[i] - target);
if (abs < min )
{
min = abs; //min 최솟값
near = numbers[i]; //차잇값의 절댓값의 최솟값일 때의 값
}
}
//[3]Output
var minimum = numbers.Min(m => Abs(m - target)); //차잇값의 최솟값
var closest = numbers.First(n => Abs(n - target) == minimum);
Console.WriteLine($"{target}와 가장 가까운 값(식):{closest}(차이:{minimum}) ");
Console.WriteLine($"{target}와 가장 가까운 값(식): {near}(차이:{min})");
}
}
}