[프로그래머스] LEVEL0 특이한 정렬 파이썬

그린·2023년 2월 15일
0

프로그래머스

목록 보기
4/28
post-thumbnail

[프로그래머스] LEVEL0 특이한 정렬


✔️문제

✅문제 설명

정수 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):
    numlist = sorted(numlist, reverse = True)
    numlist = sorted(numlist, key = lambda x : abs(n-x))
    return numlist
  1. 정수 n과 거리가 같다면 더 큰 수를 앞에 오도록 배치하기 위해 numlist를 먼저 큰 순서대로 정렬한다.
  2. lambda 식을 사용하여 n과의 거리를 기준으로 정렬한 후 반환한다.

🧐다른 사람의 풀이

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

key에 n과의 거리와 n과의 차이를 기준으로 주어 앞의 조건이 동일하면 뒤의 조건을 이용하여 정렬했다.


👍오늘 배운 점

💡lambda key에 요소를 리스트 혹은 튜플로 두 개 이상 줄 수 있다.

앞의 값이 같을 때, 뒤의 값을 이용해서 나열한다. 요소 하나이고 값이 같을 때는 먼저 처리된 수가 먼저 나열된다다(인덱스가 작은 것).

0개의 댓글