본문 바로가기
알고리즘/백준

[백준 - SILVER 5] 10989. 수 정렬하기 3 - Python3

by jsh5408 2021. 12. 16.

10989. 수 정렬하기 3

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

 

10989번: 수 정렬하기 3

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

www.acmicpc.net

 

내 풀이 - 성공

from sys import stdin
import collections

N = int(stdin.readline())

nums = collections.defaultdict(int)

for i in range(N):
    n = int(stdin.readline())
    nums[n] += 1

nums = sorted(nums.items())

for k, v in nums:
    for _ in range(v):
        print(k)

 

nums 라는 딕셔너리를 이용해서 입력받은 숫자들의 개수를 저장

 

nums 의 key 를 기준으로 정렬 후 개수 만큼 print

 

 


다른 사람의 풀이

from sys import stdin

N = int(stdin.readline())

nums = [0]*10001

for i in range(N):
    n = int(stdin.readline())
    nums[n] = nums[n] + 1

for i in range(10001):
    for j in range(nums[i]):
        print(i)

 

sN 의 범위가 10,000 보다 작거나 같은 자연수라고 주어졌으므로
처음부터 nums 의 길이를 10001 로 잡음

 

인덱스를 숫자로, 배열의 값은 개수로 사용해서 입력받은 숫자의 개수를 모두 저장

 

10001 개의 숫자들을 모두 보면서 개수만큼 print

 

정렬 없이 사용할 수 있다!!

 

 

댓글