Solution 1) 다른 사람의 풀이
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이 주어졌을 때 배열안의 요소중 n과 가장 가까운 요소를 찾되, 가장 가까운 값이 두개일 경우

더 작은 값을 반환해야하는 문제이다.

여기서 작은 값이 두개일 경우란, n에 가장 근접한 수 +1 또는 -1과 같이 절대값이 같은 수가 있을 경우를 뜻한다.

 

답안을 보면 요소0번을 기준으로 두고 계속해서 타요소와 비교를 시킨다. 

그때에 0번 요소는 고정값이 아닌, 0번 요소보다 작았던 요소의 값으로 업데이트 시킨다.

(조건문 안의 조건을 이런식으로 변경시킬 수 있는지 몰랐다)

 

결국 이 조건문을 거쳐 반복문을 모두 돌게 되면 n과 가장 가깝되 더 작은 값을 가져오게 된다.

 

비교해야할 대상을 정하는데 어려움이 있던 문제였다.

비교해야할 대상 및 가깝되 가장 작은 수를 정하기에 어려움이있었는데,

위와 같이 조건문의 대상을 업데이트시키며 나아가는 방식은 내가 고민한

것들을 한번에 없애줄 수 있는 참신한 방법이었다. 꼭 활용해보자.

+ Recent posts