문제
내가 작성한 오답
: 가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다. → 조건에 추가하지 않음
class Solution {
public int solution(int[] array, int n) {
int mindiff = 100;
int cnum = 0;
for(int i : array){
int diff = Math.abs(n-i);
if(diff<mindiff){
mindiff = diff;
cnum = i;
}
}
return cnum;
}
}
내가 작성한 정답
class Solution {
public int solution(int[] array, int n) {
int mindiff = 100;
int cNum = array[0];
for (int i : array) {
int diff = Math.abs(n - i);
if (diff < mindiff || (diff == mindiff && i < cNum)) {
mindiff = diff;
cNum = i;
}
}
return cNum;
}
}
Math.abs() - ()안의 수의 절대값을 출력
다른 사람들의 정답
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;
}
}
StreamAPI
import java.util.Arrays;
import java.util.stream.Collectors;
class Solution {
public int solution(int[] array, int n) {
return Math.min(array[Arrays.stream(array)
.map(operand -> Math.abs(n - operand)).boxed().collect(Collectors.toList()).indexOf(Arrays.stream(array).map(operand -> Math.abs(n - operand)).min().orElse(0))], array[Arrays.stream(array).map(operand -> Math.abs(n - operand)).boxed().collect(Collectors.toList()).lastIndexOf(Arrays.stream(array).map(operand -> Math.abs(n - operand)).min().orElse(0))]);
}
}

Share article