https://school.programmers.co.kr/learn/courses/30/lessons/120890
각각 원소에서 n을 뺀 값이 0에 가까울수록 n과 가장 가까운수 이므로 절대값이 가장 작은원소가 가장 가까운숫자이다. 대신 여러개일경우 더 작은수를 리턴하므로 삼항연산자로 판별하였다.
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> array, int n) {
int answer = 101;
for(const auto& a : array)
{
if(abs(a - n) < abs(answer - n))
answer = a;
else if(abs(a - n) == abs(answer - n))
answer = a > answer ? answer : a;
}
return answer;
}
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> array, int n) {
sort(array.begin(), array.end());
int closest = abs(array[0] - n);
int pos = 0;
for(int i = 1; i<array.size(); i++)
{
if(closest > abs(array[i] - n)) {
closest = abs(array[i] - n);
pos = i;
}
}
return array[pos];
}
sort를 사용해서 미리 정렬해두고 판별하는 것 같다.