본문 바로가기
프로그래머스/Level_0

[프로그래머스] Lv.0 - 특이한 정렬.py

by ro-jun 2026. 4. 18.
반응형

문제

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

제한사항

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

입출력 예

코드1

def solution(numlist, n):
    answer = []
    nunder_list = []
    nover_list = []
    for num in numlist:
        if num >= n:
            nover_list.append(num)
        else:
            nunder_list.append(num)
    nover_list = sorted(nover_list, reverse=True)
    nunder_list = sorted(nunder_list)
    for _ in range(len(numlist)+1):
        if len(nover_list) == 0:
            for nunder in reversed(nunder_list):
                answer.append(nunder)
            break
        if  len(nunder_list) == 0:
            for nover in reversed(nover_list):
                answer.append(nover)
            break
        if (nover_list[-1] - n) <= (n - nunder_list[-1]):
            answer.append(nover_list[-1])
            nover_list.pop()
        else:
            answer.append(nunder_list[-1])
            nunder_list.pop()
    return answer

코드2(lambda 추가예정)

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

반응형