inblog logo
|
silver
    알고리즘문제풀기

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

    silver's avatar
    silver
    Jan 12, 2025
    [알고리즘문제풀기] 가까운 수
    Contents
    문제내가 작성한 오답내가 작성한 정답다른 사람들의 정답

    문제

    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/120890

    내가 작성한 오답

    : 가장 가까운 수가 여러 개일 경우 더 작은 수를 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

    RSS·Powered by Inblog