개발 연습장/백준 문제풀이

[파이썬, Python] 백준 10989: 수 정렬하기 3

LooanCheong 2023. 1. 3. 20:11
반응형

문제

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

 

10989번: 수 정렬하기 3

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

www.acmicpc.net

코드

import sys
input = sys.stdin.readline

n = int(input())
num_list = [0]*10001

for _ in range(n):
    num = int(input())
    num_list[num] += 1
    
for i in range(10001):
    if num_list[i] != 0:
        for j in range(num_list[i]):
            print(i)

설명

카운팅 정렬이라는 것을 이용하는 방법인데, 
이 문제를 풀면서 처음 접했다.

우선 수를 입력받아준다.
이후 범위가 지정되어 있으므로 범위만큼의 0으로 이루어진 리스트를 만들어준다.

그다음, 숫자를 입력받을 건데,
각 수의 인덱스에 맞는 수를 1씩 증가시켜서 카운트를 해준다.

이후 0이 아닌 num_list에 대해서 출력을 해준다.

반응형