프로그래머스 - 특이한 정렬

dobyming·2022년 12월 2일
0

문제 설명

정수 n을 기준으로 n과 가까운 수부터 정렬하려고 합니다. 이때 n으로부터의 거리가 같다면 더 큰 수를 앞에 오도록 배치합니다. 정수가 담긴 배열 numlist와 정수 n이 주어질 때 numlist의 원소를 n으로부터 가까운 순서대로 정렬한 배열을 return하도록 solution 함수를 완성해주세요.

제한사항

1 ≤ n ≤ 10,000
1 ≤ numlist의 원소 ≤ 10,000
1 ≤ numlist의 길이 ≤ 100
numlist는 중복된 원소를 갖지 않습니다.

입출력 예

내 코드

def solution(numlist, n):
    answer = sorted(numlist, key = lambda x : (abs(x-n), -x))
    return answer

lambda 를 활용한 문제는 문제에 답이 있다.

numlist의 원소를 n으로부터 가까운 순서대로 정렬한 배열

n으로부터 가깝다는 문장에 주목해야한다.
어떠한 기준을 삼아 정렬을 하는 문제는 lambda로 해결할 수 있다.

따라서 매개변수 xnumlist 배열을 돌면서, 각 요소와의 차이를 절댓값 method인 abs로 구한다.
이때 절댓값이 같은 값에 대한 handling을 위해서 내림차순(절댓값은 같지만 양수값을 우선순위가 더 높게 처리)으로 구현하기 위해 -x 로 부여한다.

0개의 댓글