[코딩테스트/백준/Python]수 정렬하기 3

Enter·2022년 8월 25일
0

코딩테스트

목록 보기
48/68

🔍수 정렬하기 3

<문제>

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.


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


<출력>
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.



💡생각

  1. 수 정렬하기 2 코드를 넣어봤더니 메모리 초과가 뜸.
  2. 힌트를 보니 모든 입력을 배열에 저장하면 당연히 메모리 초과가 뜬다고 함.
  3. 그래서 10001까지의 배열을 만든 다음 입력한 숫자의 인덱스에 +1을 해주고 출력할 때 원소의 수만큼 반복해서 출력해주기로함.



💡테스트 통과한 코드

import sys
N = int(sys.stdin.readline())

def main(N):
    num = [0]*10001
    for i in range(0, N):
        num[int(sys.stdin.readline())] += 1

    for i in range(0, 10001):
        if num[i] != 0:
            for _ in range(0, num[i]):
                print(i)
        
main(N)







🔗백준 - 수 정렬하기 3
https://www.acmicpc.net/problem/10989

profile
Cherish the moment :)

0개의 댓글