[알고리즘문제풀기] 가까운 수

silver's avatar
Jan 12, 2025
[알고리즘문제풀기] 가까운 수

문제

내가 작성한 오답

: 가장 가까운 수가 여러 개일 경우 더 작은 수를 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))]); } }
notion image
 
Share article

silver