티스토리 뷰

📌 10989. 수 정렬하기3

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

 

 

✏️ 입력. 

첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.

 

📋 출력. 

첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

 

 

# 메모리 초과 
import sys

def counting_sort(arr):
    res = [0] *(max(arr) + 1)

    for i in range(len(arr)):
        res[arr[i]] += 1
        
    for i in range(len(res)):
        for j in range(res[j]):
            print(i)

input = sys.stdin.readline

n = int(input())
arr = []
for i in range(n):
    arr.append(int(input()))

counting_sort(arr)

 

입력을 먼저 모두 받고, 계수 정렬을 사용하니 답은 나오지만 백준에서 메모리 초과가 발생했다

 

 

# 맞은 코드
import sys
input = sys.stdin.readline

n = int(input())
cnt = [0 for i in range(10000+1)]

for i in range(n):
    cnt[int(input())] += 1
    
for i in range(1, 10000+1):
    for j in range(cnt[i]):
        print(i)

 

입력을 받음과 동시에 계수 정렬을 하도록 하니 문제없이 동작한다

 

 

 

 

댓글
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
최근에 올라온 글
글 보관함
Total
Today
Yesterday