리셋 되지 말자

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

알고리즘

[백준 10989] 수 정렬하기 3

kyeongjun-dev 2021. 12. 31. 02:24

코드

import sys
from collections import defaultdict
def solution(n):
    arr = []
    dd = defaultdict(int)
    for _ in range(n):
        num = int(sys.stdin.readline())
        dd[num] += 1
    for i in range(1, 10001):
        if dd.get(i):
            for _ in range(dd.get(i)):
                print(i)

n = int(input())
solution(n)

 

설명

  • 입력 개수가 최대 1천만 이므로, sys.stdin.readline() 으로 입력 시간을 줄인다.
  • 메모리 제한이 8MB 이므로, 배열에 모든 수를 저장하면 안된다.
  • 그래서 defaultdict를 사용해서 1~1만 사이의 수가 각각 몇번 카운트 되는지만 저장한다.
  • 그리고 defaultdict가 1~1만 까지 반복문을 돌 때, 그 key값이 존재한다면 key에 해당하는 value(key에 해당하는 수가 몇번 나왔는지를 가리킴) 수만큼 key 값을 출력한다.
Comments