[백준] 2751 수 정렬하기 2 Python

2024. 6. 27. 02:35Python/백준

https://www.acmicpc.net/problem/2751

 

📝  문제

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

 

🔎  풀이

퀵 소트를 구현해서 풀었다. 퀵 소트를 만들 때 피벗을 항상 중앙에 있는 인덱스로 두고 풀었는데, 시간 초과가 나서 랜덤으로 바꿨더니 해결할 수 있었다.

 

💻  코드

import sys
import random

def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    
    pivot = arr[random.randrange(0, len(arr))]
    lesser_arr, equal_arr, greater_arr = [], [], []

    for num in arr:
        if num < pivot:
            lesser_arr.append(num)
        elif num > pivot:
            greater_arr.append(num)
        else:
            equal_arr.append(num)
    
    return quick_sort(lesser_arr) + equal_arr + quick_sort(greater_arr)

numbers = []
for i in range(int(sys.stdin.readline().strip())):
    numbers.append(int(sys.stdin.readline().strip()))

numbers = quick_sort(numbers)
for i in numbers:
    sys.stdout.write(str(i) + '\n')

'Python > 백준' 카테고리의 다른 글

[백준] 11650 좌표 정렬하기 Python  (2) 2024.06.28
[백준] 1427 소트인사이드 Python  (1) 2024.06.28
[백준] 25305 커트라인 Python  (0) 2024.06.24
[백준] 2587 대표값2 Python  (2) 2024.06.24
[백준] 2164 카드2 Python  (0) 2024.06.24