import java.util.Arrays;
class Solution {
public int solution(int[] array, int n) {
Arrays.sort(array);
for (int i = 0; i < array.length; i++) {
if (array[i] >= n) {
int leftValue = n - array[(i - 1)];
int rightValue = array[i] - n;
return leftValue <= rightValue ? array[(i - 1)] : array[i];
}
}
return array[array.length - 1];
}
}
n보다 크거나 같은 배열의 인덱스이거나 그 전의 인덱스값이 문제가 요구하는 조건이다.
오름차순 정렬을 한 배열이라고 가정한다면 가장 가까운 수가 여러개
즉, 조건을 만족하는 인덱스나 그 전의 인덱스가 같은 절대값을 가지는 경우에는 작은 수가 문제의 정답이다.
그리고 배열을 다 돌아도 n값보다 크거나 같은 수를 만나지 못한다면 배열의 마지막 인덱스값이 n에 가장 가까운 수이다.
Math.abs()
를 사용하는 대신 그냥 계산을 통해서 비교하도록 하였다.