✏️ 문제 설명
정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ array의 길이 ≤ 100
- 1 ≤ array의 원소 ≤ 100
- 1 ≤ n ≤ 100
- 가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.
✏️ code
📌 Math.abs()
: array[i]와 n의 차를 절대값으로 변경합니다.
📌 if(valueDiffs[i] == minDiff) { answer = Math.min(answer, array[i])}
: 동일한 차가 발생한 경우, 더 작은 수를 return 합니다.
🖥️ 아쉬운 점
: array를 sort한 뒤 차이를 구했다면, 같은 차이를 갖는 갑슫ㄹ 중 가장 작은 값이 앞에 위치하기 때문에 동일한 값을 비교하는 횟수를 줄일 수 있었을 것으로 예상됩니다.
class Solution {
public int solution(int[] array, int n) {
int valueDiffs[] = new int[array.length];
for (int i = 0; i < array.length; i++) {
valueDiffs[i] = Math.abs(n - array[i]);
}
int minDiff = valueDiffs[0];
int answer = array[0];
for (int i = 0; i < array.length; i++) {
if (valueDiffs[i] < minDiff) {
minDiff = valueDiffs[i];
answer = array[i];
} else if (valueDiffs[i] == minDiff) {
answer = Math.min(answer, array[i]);
}
}
return answer;
}
}
반응형