https://school.programmers.co.kr/learn/courses/30/lessons/120880
def solution(numlist, n):
temp = []
for num in numlist:
distance = abs(num - n)
temp.append([distance, -num])
for i in range(len(temp)):
for j in range(i + 1, len(temp)):
if temp[i] > temp[j]:
temp[i], temp[j] = temp[j], temp[i]
answer = []
for dist, neg_num in temp:
answer.append(-neg_num)
return answer
n
과의 거리를 temp
리스트에 저장한다.temp
리스트를 거리 기준과 큰 수를 우선으로 정렬한다.def solution(numlist, n):
return sorted(numlist, key = lambda x: (abs(x - n), -x))
sorted()
함수에 람다를 이용하여 정렬 기준을 바로 바꿨다.-num
이면 큰 수가 먼저 올까? 처음엔 이방식을 몰라 한참을 헤맸다.[a, b] < [c, d]
식으로 먼저 첫 요소 (a vs c)
를 비교, 같으면 두 번째 요소 (b vs d)
를 비교한다.num
을 추가하게 되면 작은 값이 앞으로 오게 된다.-num
은 "큰 수 우선 정렬"을 가능하게 하는 아주 흔한 테크닉이라고 하니 명심하자.피드백은 언제나 환영입니다 :)