백준 10989번 수 정렬하기 3
코드 풀이
카운팅 정렬
을 이용하여 문제를 해결할 수 있습니다.
- 카운팅 정렬은 정렬 원소의 숫자가 크지 않을 때 사용할 수 있습니다.
- 정렬 원소의 숫자가 크다면 메모리를 많이 잡아먹기 때문에
비효율적
입니다.
메모리 초과
n = int(input())
num = [int(input()) for _ in range(n)]
count = [0] * (max(num) + 1)
for i in range(n):
count[num[i]] += 1
for i in range(1, len(count)):
for j in range(count[i]):
print(i)
시간 초과
- 입력 변수를 위한 리스트 변수를 만들어줄 필요가 없었습니다.
n = int(input())
count = [0] * (10001)
for i in range(n):
count[int(input())] += 1
for i in range(1, len(count)):
for j in range(count[i]):
print(i)
정답
- 단순히
input
으로 입력을 받는 것이 아닌 sys
모듈을 이용했습니다.
import sys
n = int(sys.stdin.readline())
count = [0] * (10001)
for i in range(n):
count[int(sys.stdin.readline())] += 1
for i in range(1, len(count)):
for j in range(count[i]):
print(i)