문제 설명
정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.
입출력 예
나의 풀이
class Solution {
public int solution(int[] array, int n) {
int answer = 0;
int near = array[0];
for(int i = 1; i < array.length; i++){
if(Math.abs(n - near) != Math.abs(n - array[i])){
if(Math.abs(n - near) > Math.abs(n - array[i])){
near = array[i];
}
} else {
near = near > array[i] ? array[i] : near;
}
}
answer = near;
return answer;
}
}
참고 풀이 (정렬하면 간단해짐)
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;
}
}
나의 풀이
function solution(array, n) {
var answer = 0;
array.sort((a, b) => a - b);
for(let 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;
}
참고 풀이 (깔끔)
function solution(array2, n) {
var array = [...array2].sort()
var cal = array.map(v => Math.abs(v-n)) //요소에서 n뺀것을 절대값으로 표시
var cal2 = Math.min(...cal) //제일 가까운수의 값
var cal3 = cal.indexOf(cal2) //제일 가까운수의 인덱스
return array[cal3];
}