[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