동까의 코딩

[Python] 백준 10989 : 수 정렬하기 3 본문

문제 풀이/백준

[Python] 백준 10989 : 수 정렬하기 3

동까의 코딩 2024. 4. 20. 03:00
반응형

브론즈 1 문제이지만 메모리 초과가 많이 나오는 문제라서 작성하여본다.

 

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

 

10989번: 수 정렬하기 3

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

www.acmicpc.net

 

append / sort를 사용하면 메모리를 다시 재설정해줘서 추가하기 때문에 메모리 초과가 난다.

 

메모리를 미리 할당 시켜주고, 해당 인덱스에 1씩 더해줘서 처음부터 추가된 숫자 인덱스만큼만 출력해주면 답이 나온다.

 

import sys

n = int(sys.stdin.readline())

num_list = [0] * 10001

for _ in range(n):
    num_list[int(sys.stdin.readline())] += 1

for i in range(10001):
    if num_list[i] != 0:
        for j in range(num_list[i]):
            print(i)

 

10001으로 세팅해주고, 인덱스에 카운트 된 숫자만큼 인덱스를 출력해주는 방식을 사용하였다.

반응형