728x90
SMALL

using System;
using System.Diagnostics;

public class Solution {
    public int solution(int[] array, int n) {
        int answer = 0;
        int dif = 100; // 범위가 1~100 자연수고 아무리 커도 99이기 때문에 적당히 100으로 차이를 정의한다.
        Array.Sort(array);
        
        for(int i=0;i<array.Length;i++)
        {
            if(Math.Abs(array[i]-n) < dif)
            {
                dif = Math.Abs(array[i]-n);
                answer = array[i];
            }
        }
        return answer;
    }
}

 

//배열을 sorting을 하지 않으면, 예를 들어서 [2, 7, 3] 5같은 경우에 7을 선택해버리는 문제가 있어서 소팅하고 시작하는 게 답이다.(테스트 5번이 이거인 듯)

 

파이썬

//////////

 

 

def solution(array, n):
    array.sort(key = lambda x : (abs(x-n), x-n))
    answer = array[0]
    return answer

 

자바

/////////

 

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;
    }
}

 

 

class Solution {
    public int solution(int[] array, int n) {
        int answer = 0;
        int min = 0;
        
        for(int num : array)
        {
            if(answer == 0)
            {
                answer = num;
                min = Math.abs(num - n);
            }
            else
            {
                if(Math.abs(num - n) < min)
                {
                    answer = num;
                    min = Math.abs(num - n);
                }
                else if( Math.abs(num - n) == min && num < answer){
                    answer = num;
                }
            }
        }
        return answer;
    }
}
728x90

설정

트랙백

댓글