프로그래머스 문제풀이/Level 0

가까운 수 (자바, Java)

뮤츠 2022. 11. 27. 19:19

처음에는 그냥 가볍게 풀다가, 가장 가까운 수가 더 작아 차이값이 음수가 나오는 경우도 고려해야 했다.

결국 set 자료형을 활용해서 풀었다. map자료형과 다르게, set 자료형은 백준에서 한 번 밖에 활용하지 않아,

아직은 활용이 낯설다. 하지만 코테에서는 꽤나 빈출하는 자료형이고, 중복체크에는 set이 괜찮아보여서

앞으로도 자주 활용할 예정.

 

class Solution {
    public int solution(int[] array, int n) {
        int answer = 0;
        int l = array.length;
        int[] array2 = new int[l];
        boolean sameDistance = false; // 같은거리여부
        Set <Integer> set = new HashSet<>();
        
        for (int i=0; i<l; i++) {
        	set.add(array[i]);
            array2[i] = Math.abs(array[i]-n);
        }
        
        Arrays.sort(array2);
        if (set.contains(n-array2[0])) {
        	answer = n-array2[0];
        } else {
        	answer = n+array2[0];
        }
        
        return answer;
    }
}