가까운수.python

Haks.·2024년 12월 18일
0

Study

목록 보기
14/65

문제 설명

정수 배열 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))
  1. min, max, sort 같은 함수는 key를 설정해 줄 수 있다
  2. lambda x: 뒤에 () 인 튜플 부분에서는 차례대로 min 을 적용시켜 줄 거란걸 나타낸다
  3. 즉 abs(n-x) 가 여러개라면 x그중 작은것을 min 해라는 뜻이다.

설명 : array 의 값에 대해 lambda 로인해 n-x 의 값중 제일 작은 값을 골라라,
그후 그 값이 여러개면 그중에 작은 것을 반환해라

0개의 댓글

관련 채용 정보