정수 n을 기준으로 n과 가까운 수부터 정렬하려고 합니다. 이때 n으로부터의 거리가 같다면 더 큰 수를 앞에 오도록 배치합니다. 정수가 담긴 배열 numlist와 정수 n이 주어질 때 numlist의 원소를 n으로부터 가까운 순서대로 정렬한 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ n ≤ 10,000
1 ≤ numlist의 원소 ≤ 10,000
1 ≤ numlist의 길이 ≤ 100
numlist는 중복된 원소를 갖지 않습니다.
입출력 예
numlist n result
[1, 2, 3, 4, 5, 6] 4 [4, 5, 3, 6, 2, 1]
[10000,20,36,47,40,6,10,7000] 30 [36, 40, 20, 47, 10, 6, 7000, 10000]
def solution(numlist, n):
answer = []
dict1 ={v : abs(v - n) for v in numlist}
# 순서대로 정리되어 있음
sorted_dict = sorted(dict1.items(), key=lambda x: (x[1], -x[0] if isinstance(x[0], int) else x[0]))
return [i for i, _ in sorted_dict]
sorted 함수는 튜플로 여러개의 조건을 한번에 넣을 수 있다.(x,y)
x 기준에 대하여 그다음 기준 y에 대하여
# 첫번째
def solution(numlist, n):
answer = sorted(numlist,key = lambda x : (abs(x-n), n-x))
return answer
# 정렬한다. 첫번째 abs(x-n)에 대하여 절대값이 작은거에 대해서
# 두번째 같은 값이 있을때만 작동한다 sorted 함수 특성상
# 그래서 두번쨰 값을 기준으로 n-x 값 n을 x 로 뻇을떄 가장 큰값 이 기준으로 정렬한다.
def solution(numlist, n):
return sorted(numlist,key = lambda x: [abs(x-n),-x])
# 이경우에 2번째 -x 는 x값을 뒤집었을떄 0에 더 가까우면 작은수니까 내림차순으로 정렬된다. 그래서 큰값