정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ array의 길이 ≤ 100
1 ≤ array의 원소 ≤ 100
1 ≤ n ≤ 100
가장 가까운 수가 여러 개일 경우 더 작은 수를 return 합니다.
입출력 예
array n result
[3, 10, 28] 20 28
[10, 11, 12] 13 12
나의풀이 :.. 형편없다
def solution(array, n):
# dict1은 인덱스에 따른 n-k 값
dict1 = {k : abs(n-v) for k, v in enumerate(array)}
# 0에 가장 가까운수
min_arr = min(dict1.values())
a = []
for k, v in dict1.items() :
# 최소값과 같은수가 있으면 그값의 인덱스 추가해라
if v == min_arr :
a.append(k)
return min((array[i] for i in a))
lambda를 활용한 풀이 :
def solution(array, n) :
return min(array, key = lambda x : (abs(n-x),x))
설명 : array 의 값에 대해 lambda 로인해 n-x 의 값중 제일 작은 값을 골라라,
그후 그 값이 여러개면 그중에 작은 것을 반환해라