Blog

가까운 수

문제 #

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

  • 제한사항
    • 1 ≤ array의 길이 ≤ 100
    • 1 ≤ array의 원소 ≤ 100
    • 1 ≤ n ≤ 100
    • 가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.
  • 입출력 예
    array n result
    [3, 10, 28] 20 28
    [10, 11, 12] 13 12

나의 풀이 #

import java.util.*;

class Solution {
    public int solution(int[] array, int n) {
        int answer = 0;
        int min = 101;
        
        Arrays.sort(array);
        
        for(int i = 0; i<array.length; i++) {
            if(min > Math.abs(array[i]-n)) {
                min = Math.abs(array[i]-n);
                answer = array[i];
            }
        }
        
        return answer;
    }
}
  • 배열의 값에서 n을 뺀 절댓값이 더 작은 경우를 구한다.
  • 최소차이값은 100이상이 될 수 없으므로 초기값을 101로 설정한다.
  • 배열array의 순서가 섞여있을 경우를 대비 오름차순으로 정렬한다.

다른 사람의 풀이 #

import java.util.*;

class Solution {
    public int solution(int[] array, int n) {
        int answer = 0;
        Arrays.sort(array);
        for(int i = 1 ; i < array.length ; i++){
            if(Math.abs(n-array[0]) > Math.abs(n-array[i])){
                array[0] = array[i];
            }
        }
        answer = array[0];
        return answer;
    }
}
  • 가장 가까운 수를 array[0]에 저장하며 확인하였다.
  • 차이값을 따로 저장하지 않았다.

관련개념 학습 #

  • 관련 개념을 찾아서 공부한 내용을 적는다.
  • ctrl + p로 내가 필기한 내용 중에서 관련내용이 있는지 찾아서 그 페이지의 링크를 복사하여 붙혀넣는다.
  • 필기 페이지에도 이 문제의 링크를 복사하여 “관련 문제"라고 써놓고 붙혀넣는다.