코딩테스트/프로그래머스

[프로그래머스] Java :: 가까운 수

블로그 주인장 2023. 9. 15.

문제 링크

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 설명

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

입출력 예시

array n result
[3, 10, 28] 20 28
[10, 11, 12] 13 12

풀이

1. array에 들어있는 정수 중 n과 가까운 수를 리턴하는 문제이다.

2. n에 가까운 수를 리턴하기 위해서 array에 있는 인덱스의 값을 빼서 절댓값을 추출한다.

3. 추출한 수를 임의의 값 min보다 작으면 값을 넣어주고, 값을 리턴하는 형식으로 반환한다.

코드 (첫 작성)

class Solution {
    public int solution(int[] array, int n) {
        int min = Integer.MAX_VALUE;
        int answer = 0;
        
        for (int i = 0; i < array.length; i++) {
            int a = (int)Math.abs(array[i] - n);
            
            if(min > a) {
                min = a;
                answer = array[i];
            }
        }

        return answer;
    }
}

코드 (재 작성)

1.  현재의 최소 n의 거리와 같이 동일한 경우, 더 작은 값을 저장하는 조건 추가

import java.util.*;

class Solution {
    public int solution(int[] array, int n) {
        Arrays.sort(array);
        
        int min = Integer.MAX_VALUE;
        int answer = 0;
        
        for (int i = 0; i < array.length; i++) {
            int a = (int)Math.abs(array[i] - n);
            
            if(min > a) {
                min = a;
                answer = array[i];
            } else if (min == a && answer > array[i]) {
                min = a;
                answer = array[i];
            }
        }

        return answer;
    }
}
반응형

댓글