알고리즘테스트/Programmers

[Lv.0_Java] 가까운 수

코딩거인 2023. 10. 5. 15:13
728x90

class Solution {
    public int solution(int[] array, int n) {
        int answer = 0;
        int min = 2147483647;
        for(int i = 0; i < array.length; i++){
            int diff = Math.abs(n - array[i]);
            if(diff < min){
                min = diff;
                answer = array[i];              
            }
            if (diff == min && array[i] < answer) {
                answer = array[i];
            }
        }
        return answer;
    }
}


최소값을 비교해주기 위하여 int의 최대값으로 변수 생성해준뒤 n 에서 array의 i 번째 값을 빼주고 절댓값으로 변경해준다
그 뒤 만약 그 절대값이 최소값보다 작다면 최소값에다가 절대값을 할당하여 주고 answer 에 array[i]를 할당해준다

하지만 동일한 차이가 있을경우를 생각해서 절대값과 최소값이 같고 array[i] 가 answer 보다 작은경우 다시 answer 변수에 할당해 준뒤 return 해주었다.

728x90