정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.
제한사항 ->가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.
생각한 풀이
1. 현재 값 -n 을 통해 차이 비교
2. 차가 더 작다면 n에 더 가까운 값이므로 저장
3. 만약 현재 저장한 값과 다음 차가 같다면 작은 값을 저장
class Solution {
public int solution(int[] array, int n) {
int answer = array[0];
for(int i=0;i<array.length;i++){
int now=Math.abs(array[i]-n);
int pre=Math.abs(answer-n);
if(now<pre ||(now==pre&&array[i]<answer)){
answer=array[i];
}
}
return answer;
}
}
🐴 풀이
1. array 배열의 첫번째 값을 answer에 저장
2. for문을 돌면서 현재 i번째 값과 n의 차이의 절댓값을 now에 저장
3. answer와 n의 차이의 절댓값을 pre에 저장
4. 둘의 차이 즉, 현재의 차와 이전 값의 차를 비교해 만약 현재의 차가 더 작다면(n에 더 가깝다면) answer에 array[i] 값을 저장
5. 또는, 현재의 차와 이전의 차가 같고 현재의 값이 이전의 값보다 작아도 answer에 array[i]에 저장한다.(제한사항)