카테고리 없음

코딩테스트 입문 : 가까운 수

서버관리자 페페 2024. 4. 19. 14:20

설계 : array 전부 순회하면서 min 선형 비교

or 이진 탐색

or n보다 커지는 array[i]를 잡아 idx plate로 담아낸다

idx와 idx-1를 비교

 

n이 array의 원소보다 크거나 작을때

-> 경계에서 벗어나는 것 먼저 예외 처리 간단하게 If로 해준다

import java.util.Arrays;

class Solution {
    public int solution(int[] array, int n) {
        
        int L = array.length;
        
        Arrays.sort(array);
        
        if (n >= array[L-1])
            return array[L-1];
        if (n <= array[0]) 
            return array[0];
    
        
        int idx = 0;
        
        for (int i = 0; i < L; i++) {
            if (array[i] > n) {
                idx = i;
                break;
            }
        }
        
        
        int a = n-array[idx-1];
        int b = array[idx]-n;
        
        if (a == b)
            return array[idx-1];
        else if (a > b) 
            return array[idx];
        else
            return array[idx-1];
            
        
        
        
    }
}