본문 바로가기
Python/코딩도장 풀이 모음

[코딩도장] [Lv.1] Special Sort

by Dailybook406 2022. 7. 9.

[ 문제 ]

n개의 정수를 가진 배열이 있다. 이 배열은 양의정수와 음의 정수를 모두 가지고 있다. 이제 당신은 이 배열을 좀 특별한 방법으로 정렬해야 한다.

정렬이 되고 난 후, 음의 정수는 앞쪽에 양의정수는 뒷쪽에 있어야 한다. 또한 양의정수와 음의정수의 순서에는 변함이 없어야 한다.
예. -1 1 3 -2 2 ans: -1 -2 1 3 2.​

 

[ 풀이 ]

# My solution
n = list(map(int,input().split()))    #1

pos_num = [x for x in n if x < 0]    #2
nag_num = [y for y in n if y >= 0]    #3

print(pos_num + nag_num)    #4

실행결과

# 입력1
-1 1 3 -2 2
[-1, -2, 1, 3, 2]    # 출력값1

# 입력2
-5 7 -3 2 4 -1 9
[-5, -3, -1, 7, 2, 4, 9]    # 출력값2
더보기
# Best solution
def do(alist):
    return [x for x in alist if x < 0] + [x for x in alist if x >= 0]

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

#1

input()함수로 입력을 받는데, 뒤에 .split()을 붙여서 띄어쓰기를 기준으로 한 번에 문자를 입력받는다.

그리고 map()함수를 이용하여 입력받은 문자열을 정수형(int)으로 바꿔준다.

 

이때 단순히 이대로 끝내면 map()함수는 입력받은 값을 <map object>

의 특수한 형태로 저장하기 때문에 list()함수를 통해 리스트의 형태로 바꿔준다.

 

 

#2

음수만을 따로 분리하여 음수 리스트(nag_num)를 생성한다.

음수 리스트는 리스트 내포 형식을 사용하여 편리하게 생성할 수 있다.

 

풀이에 사용한 리스트 내포 형식 [x for x in n if x < 0]은
'n의 요소를 x라고 할 때 0보다 작은 x로 리스트를 만들어라'는 의미이다.

 

 

#3

음수 리스트와 같은 방식으로 양수만 따로 분리하여 양수 리스트(pos_num)를 생성한다.

 

 

#4

음수 리스트와 양수 리스트를 더하여 출력한다.

 

리스트끼리 덧셈을 하면 더해지는 리스트 뒤에 더하는 리스트의 값들이 추가되어 자연스럽게 앞에는 음수만, 뒤에는 양수만 정렬이 된다.

 


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

 

코딩도장

프로그래밍 문제풀이를 통해서 코딩 실력을 수련

codingdojang.com

 

댓글