[프로그래머스] Lv.0 가까운 수.java

김엄지·2024년 4월 29일

알고리즘

목록 보기
75/90

문제 설명

정수 배열 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 answer = 0;
        int diff = 0;
        int min = Integer.MAX_VALUE;
        
        for(int i = 0; i < array.length; i++) {
            diff = Math.abs(n - array[i]);
            if(diff < min) {
                min = diff;
                answer = array[i];
            } else if(diff == min && array[i] < answer) {
                answer = array[i];
            }
        }
        return answer;
    }
}
  1. 변수 초기화
  • int answer = 0; : 반환할 값을 저장하는 변수. 배열에서 n과 가장 가까운 값을 저장
  • int diff = 0; : 배열의 각 요소와 n사이의 차이를 저장하는 변수
  • int min = Integer.MAX_VALUE; : 최소 차이를 저장하는 변수. Integer형의 최대값(2,147,483,647)으로 초기화. 이 값은 초기에는 배열의 첫 번째 요소와 n 사이의 차이와 비교된다.
  1. 반복문
  • diff = Math.abs(n - array[i]) : 현재 배열 요소와 n 사이의 차이를 계산. Math.abs() 메서드는 절댓값을 반환한다.
  • 절대값 차가 작을수록 n과 array배열의 원소 값이 가깝다.
  1. 조건문
  • if(diff < min) : 최소 차이를 찾으면 diff로 업데이트한다.
  • else if(diff == min && array[i] < answer) : 더 작은 값을 찾았으므로 answer를 현재 배열 요소로 업데이트한다.
  • answer = array[i];: 현재 배열 요소를 answer에 저장한다.

참고
https://tiny-stone.com/328

profile
나만의 무언가를 가진 프로그래머가 되자

0개의 댓글