반응형
백준 2751번 수 정렬하기 2
2751번: 수 정렬하기 2
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
파이썬 풀이
병합 정렬로 풀었습니다.
import sys
sys.setrecursionlimit(10**6)
input = sys.stdin.readline
N = int(input())
arr = []
for i in range(N):
arr.append(int(input()))
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr)//2
L = merge_sort(arr[:mid]) # 분할
R = merge_sort(arr[mid:]) # 분할
mer = []
i = 0
j = 0
while i < len(L) and j < len(R): # 정렬 및 결합
if (L[i] > R[j]):
mer.append(R[j])
j += 1
else:
mer.append(L[i])
i += 1
if i != len(L):
mer += L[i:]
if j != len(R):
mer += R[j:]
return mer
mer = merge_sort(arr)
for i in mer:
print(i)
반응형
'Python > 백준' 카테고리의 다른 글
[백준 파이썬] 2805번 나무 자르기 (0) | 2021.05.02 |
---|---|
[백준 파이썬] 17219번 비밀번호 찾기 (0) | 2021.05.01 |
[파이썬 백준] 2750번 수 정렬하기 (0) | 2021.04.29 |
[백준 파이썬] 11053번 가장 긴 증가하는 부분 수열 (0) | 2021.04.27 |
[백준 파이썬] 2747번 피보나치 수 (0) | 2021.04.26 |