[ 문제 ]
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>
#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
'Python > 코딩도장 풀이 모음' 카테고리의 다른 글
[코딩도장] [Lv.2] 다음 입사문제 중에서 (0) | 2022.07.02 |
---|---|
[코딩도장] [Lv.2] 문자열 압축하기 (0) | 2022.06.11 |
[코딩도장] [Lv.1] 게시판 페이징 (0) | 2022.05.23 |
[코딩도장] [Lv.1] 완전수 구하기 (0) | 2022.05.21 |
[코딩도장] [Lv.3] Spiral Array (0) | 2022.05.14 |
댓글