[코틀린, kotlin / 프로그래머스] 가까운 수

1. 문제 출처


2. 문제 설명 

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

3. 제한사항 

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

4. 입출력 예

array

n

result

[3, 10, 28]

20

28

[10, 11, 12]

13

12


5. 풀이

class Solution {
    fun solution(array: IntArray, n: Int): Int {
        array.sort() //array 오름차순 정렬
        var answer: Int = 0
        var compare: Int = Math.abs(array[array.size-1]-n) //array와 n 값의 차
        
        for(i in array.size-1 downTo 0){ //array의 큰 수부터 작은 수까지 반복문을 돌린다.
            if(Math.abs(array[i]-n)<=compare){
                answer=array[i]
                compare=Math.abs(array[i]-n)
            } 
        }
        
        return answer
    }
}
가장 가까운 수가 여러 개일 경우 더 작은 수를 return 하기 때문에 array를 오름차순으로 정렬하고 array의 맨 마지막 요소부터 시작해서 작은 수까지 반복문을 돌린다. 그리고 compare 변수(비교값)보다 작은 것이 있으면 answer에 저장하고 compare을 갱신한다.