본문 바로가기
  • Let's study
PS/Programmers

[프로그래머스 Lv.0] 가까운 수(Java)

by 코딩고수이고파 2026. 7. 24.

문제

https://school.programmers.co.kr/learn/courses/30/lessons/120890

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

풀이

배열을 순회하면서 각 원소와 n의 차이의 절댓값을 구해 가장 작은 값을 찾는다.

두 수의 차이는 음수가 될 수도 있으므로 Math.abs()를 이용해 절댓값으로 계산한다. 현재까지의 최소 차이보다 작은 경우에는 최소 차이와 정답을 모두 갱신한다.

int gap = Math.abs(array[i] - n);

if (gap < min) {
    min = gap;
    answer = array[i];
}
 

문제에서는 가장 가까운 수가 여러 개라면 더 작은 수를 반환해야 한다. 따라서 차이가 같은 경우에는 현재 저장된 값보다 작은 수인지 확인한 뒤 정답을 갱신한다.

else if (gap == min && array[i] < answer) {
    answer = array[i];
}
 

초기값을 101로 설정한 이유는 문제에서 배열의 원소와 n의 범위가 100 이하이므로, 어떤 값과 비교해도 처음에는 반드시 갱신되도록 하기 위함이다.

코드

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

댓글