코딩고치

[파이썬][백준] 10989번: 수 정렬하기 본문

파이썬/백준 문제

[파이썬][백준] 10989번: 수 정렬하기

코딩고치 2020. 5. 28. 00:38

1. 문제

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

 

10989번: 수 정렬하기 3

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

www.acmicpc.net

  • 중복되는 수가 나오므로 계수 정렬을 이용하여 풀었다.
  • 각각의 숫자가 몇 개가 나오는지 해당하는 리스트 인덱스에 입력
5 2 3 1 4 2 3 5 1 7

입력받는 수

Index 0 1 2 3 4 5 6 7
count 0 2 2 2 1 2 0 1

리스트 인덱스를 이용하여 해당 숫자가 몇 개 나오는지 입력

  • 앞에서부터 차례대로 해당 인덱스를 count만큼 출력

 

2. 소스코드

import sys

n = int(sys.stdin.readline())
list = [0 for i in range(10001)]

for i in range(n):
    num = int(sys.stdin.readline())
    list[num] += 1

for i in range(10001):
    if list[i] != 0:
        for j in range(list[i]):
            print(i)
  • 입력을 받기 위해 input()이 아닌 sys 라이브러리에 있는 sys.stdin.readline()을 이용
  • sys.stdin.readline()이 input()보다 속도가 빠름
  • 이 문제에서 input()으로 풀면 시간 초과가 나지만 sys.stdin.readline()으로 풀면 정답 처리가 됨.
Comments