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

당당·2023년 4월 20일
0

프로그래머스

목록 보기
7/245

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

📔문제

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


🚫제한사항

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


📝입출력 예

arraynresult
[3, 10, 28]2028
[10, 11, 12]1312

📝입출력 예 설명

입출력 예 #1

3, 10, 28 중 20과 가장 가까운 수는 28입니다.

입출력 예 #2

10, 11, 12 중 13과 가장 가까운 수는 12입니다.


🧮알고리즘 분류

  • 조건문
  • 반복문
  • 시뮬레이션
  • 문자열

📃소스 코드

import java.util.Arrays;

class Solution {
    public int solution(int[] array, int n) {
        int answer = 0;
        int a=0;
        int b=0;
        boolean isSmall=false;
        
        Arrays.sort(array);
        
        for(int i=0;i<array.length;i++){
            if(array[i]<=n){
                if(i==array.length-1){
                    answer=array[i];
                }
                else if(n<=array[i+1]){
                    a=n-array[i]; //차
                    b=array[i+1]-n; //차
                    if(a>b){
                        answer=array[i+1];
                    }
                    else if(a<b){
                        answer=array[i];
                    }
                    else{//a==b
                        answer=array[i];
                    }
                }
            }
            else if(n<array[0]){
                answer=array[0];
            }
                
        }
        return answer;
    }
}

📰출력 결과


📂고찰

17번, 18번에서 자꾸 틀렸다고 나왔었다.
왜 그런가 생각해보니 반례가 있었다.
[2,3,4] 배열에 입력값이 1 이면, 2가 출력되어야 하는데 나는 4가 출력이 됐던것이다..

그래서, 조건을 추가해줬다.
만약, 첫번째 원소값보다 입력값이 작으면
그냥 바로 답을 첫번째 원소값으로 줬다.

profile
MySQL DBA 신입 지원

0개의 댓글