문제 풀이/프로그래머스

프로그래머스 lv0 가까운 수

춘핑이 2023. 2. 27. 17:50

문제

정수 배열 array와 정수 n이 매개변수로 주어질 때,
array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.

코드

public static int solution(int[] array, int n) {
        int answer = 0;
        // n - x 절댓값이 가장 작은 수
        int close = Math.abs(n - array[0]);

        Arrays.sort(array);

        for (int i = 0; i < array.length; i++) {
            if (Math.abs(n - array[array.length - i - 1]) <= close) {
                close = Math.abs(n - array[array.length - i - 1]);
                answer = array[array.length - i - 1];
            }
        }

        return answer;
    }

풀이

정수 n과 가깝다는 것은 n - 값을 뺏을때 절댓값이 가장 작은 수를 의미한다.
문제는 주어진수가 10일때 11과 9모두 같은 값을 가지는데 이 중에서 작은 수를 출력하라는 제약조건이 있었다.
그래서 나는 배열을 오름차순으로 만들고 뒤에서부터 값을 비교했다.
둘 중 작은 값이 나중에 나오도록 하기 위해서이다.