본문 바로가기
Coding Test/Java Coding Test

[프로그래머스 / 자바] - 가까운 수

by nam_ji 2024. 6. 27.

가까운 수

문제

  • 정수 배열 array와 정수 n이 매개변수로 주어집니다.
  • array에 들어있는 정수 중 n과 가장 가까운 수를 출력하는 문제입니다.


테스트 (인텔리제이)

  • array를 Arrays 클래스의 sort를 이용하여 오름차순 정렬하고 시작합니다.
  • for문을 이용하여 array 크기만큼 순회하도록 하고 if문으로 n에서 array의 첫번째 원소를 뺸 절댓값과 n에서 array의 for문 순차에 맞는 원소 값을 뺀 절댓값을 비교하여 n - array[0] 값이 더 크면 array의 첫번째 원소를 그 때의 array원소 즉 for문의 순서인 원소 (array[i]) 값으로 바꿔줍니다.
  • 그러면 마지막에는 첫번째 원소가 가장 작은 값을 되고 그 값을 answer에 담아주면 됩니다.
import java.util.Arrays;

public class 가까운_수 {
  public static void main(String[] args) {
    /*
    정수 배열 array와 정수 n이 매개변수로 주어집니다.
    array에 들어있는 정수 중 n과 가장 가까운 수를 출력하는 문제입니다.
    
    입출력 예
    
    array	      n	  result
    [3, 10, 28]	  20	28
    [10, 11, 12]	13	12
     */
    int[] array = {3, 10, 28};
    int n = 20;
    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];

    System.out.println(answer);
  }
}

프로그래머스 코드

import java.util.*;

class Solution {
    public int solution(int[] array, int n) {
        int answer = 0;
        Arrays.sort(array);
        
        for (int i = 0; i < array.length; i++) {
            if (Math.abs(n - array[0]) > Math.abs(n - array[i])) {
                array[0] = array[i];
            }
        }
        
        answer = array[0];
        
        return answer;
    }
}