[Python] 코딩 도장 - Special Sort

Updated:

코딩 도장 사이트의 문제를 직접 풀어본 내용을 정리하여 올립니다.

코딩 도장에서 여러 문제를 확인할 수 있습니다.

난이도 순으로 차근차근 풀어보려 합니다.


[문제: Special Sort] - Lv.1

n개의 정수를 가진 배열이 있다.

이 배열은 양의 정수와 음의 정수를 모두 가지고 있다.

이제 당신은 이 배열을 좀 특별한 방법으로 정렬해야 한다.

정렬이 되고 난 후, 음의 정수는 앞쪽에 양의정수는 뒷쪽에 있어야 한다.

또한 양의 정수와 음의 정수의 순서에는 변함이 없어야 한다.

예. -1 1 3 -2 2 ans: -1 -2 1 3 2.

출처: https://codingdojang.com/scode/414?answer_mode=hide


[풀이]

import numpy as np

data = [-1, 1, 3, -2, 2]

def special_sort(data):
    arr = np.array(data)

    minus = arr[arr < 0]
    plus = arr[arr > 0]

    return np.concatenate([minus,plus])

special_sort(data)
array([-1, -2,  1,  3,  2])

Numpy의 배열 인덱싱을 이용해서 풀어보았다.


[추천 풀이]

def do(alist):
    return [x for x in alist if x < 0] + [x for x in alist if x >= 0]

do([-1, 1, 3, -2, 2])
[-1, -2, 1, 3, 2]

다른 분들이 풀이한 내용 중 추천 수가 많은 풀이이다.

한 줄 for문으로 음수 리스트와 양수 리스트를 더하여서 풀었다.

Leave a comment