본문 바로가기
프로그래머스/[프로그래머스 - JAVA] Lv.0

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

by 코딩하는 흰둥이 2023. 3. 12.

 

  • 내 풀이
import java.util.Arrays;
class Solution {
    public int solution(int[] array, int n) {
        int answer = 0;
        
        // 오름차순으로 정렬
        Arrays.sort(array);
        int[] check = new int[array.length];

        for (int i = 0; i < array.length; i++) {
        // Math.abs - 양수로 변환
            check[i] = Math.abs(array[i]- n) ;
        }

	// 비교할 값으로 array[i]에서 -n 한 값 중 첫번째 값을 넣어둔다.
        int result = check[0];

	// answer 가 0이면 들어간 값이 없다는 뜻
       // result의 0번째 값은 위에서 오름차순으로 정리하여 - n 한 값이므로 값이 크다 
        for (int i = 0; i < check.length; i++) {
            if (answer == 0 || result > check[i]){
                result = check[i];
                answer = array[i];
            }
        }
        return answer;
    }
}

처음에 만들었던 코드는 제출 후 채점하기에서 자꾸 1~2개씩 틀리는 상황이 발생해 날 멘붕에 빠지게 했다

이것저것 찾아보던 중 제한사항을 제대로 읽어보지 않았다는 것을 깨닫게 됐다....하...

  • 가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.

이 중요한 문장을 빼고 코드를 만들었다는거....

Math.abs 까지 사용해놓고 아래의 코드 처럼 만들었어야 했는데 불필요하게 for문을 더 사용하여 코드를 만들었다

 

 

 

  • 다른 사람 풀이
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;
    }
}

 

Math.abs 까지 사용해놓고 위의 코드 처럼 만들었어야 했는데 불필요하게 for문을 더 사용하여 코드를 만들었다

댓글