가까운 수

nacSeo (낙서)·2024년 5월 15일
0

프로그래머스

목록 보기
165/169

문제 설명

정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.

제한사항

1 ≤ array의 길이 ≤ 100
1 ≤ array의 원소 ≤ 100
1 ≤ n ≤ 100
가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.

나의 코드

  • 첫 번째 코드
class Solution {
    public int solution(int[] array, int n) {
        int min = Integer.MAX_VALUE;
        int answer = 0;
        for(int num : array) {
            int diff = Math.abs(num - n);
            if(diff<min) {
                min = diff;
                answer = num;
            }
        }
        return answer;
    }
}
  • 최종 코드
class Solution {
    public int solution(int[] array, int n) {
        int min = Integer.MAX_VALUE;
        int answer = 0;
        for(int num : array) {
            int diff = Math.abs(num - n);
            if(diff<min) {
                min = diff;
                answer = num;
            } else if(diff==min && num<answer) {
                answer = num;
            }
        }
        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;
    }
}

느낀 점

반복문을 통해 배열의 인덱스를 돌며 n과의 차이가 가장 작은 값을 저장하고, 해당 값의 기본 값을 저장해주는 풀이로 문제에 접근했다. 그러나 첫 번째 코드로 실행하니 18개의 테스트에서 2개가 실패됐다. 무슨 문젠지 곰곰히 생각하다가 두 수의 차이와 저장해둔 가장 작은 차이값을 비교할 때 같은 경우를 추가하여 풀어내니 해결되었다.
다른 사람 코드와 같이 미리 배열을 정렬시킨 후 풀이하는 방법도 존재했다.

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글