티스토리 뷰

📌 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)
입력을 받음과 동시에 계수 정렬을 하도록 하니 문제없이 동작한다
'Computer Science > 백준 알고리즘' 카테고리의 다른 글
[백준.11004 - Python] K번째 수 (0) | 2021.12.03 |
---|---|
[백준.20291 - Python] 파일 정리 (0) | 2021.11.30 |
[백준.1431 - Python] 시리얼 번호 (0) | 2021.11.27 |
[백준.11656 - Python] 접미사 배열 (0) | 2021.11.27 |
[백준.11650 - Python] 좌표 정렬하기 (0) | 2021.11.27 |