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;
}
}