just inside

[백준] Bronze 1. 10989 - 수 정렬하기 3 python 본문

coding test/정렬

[백준] Bronze 1. 10989 - 수 정렬하기 3 python

방울도마도 2024. 7. 16. 12:38
728x90

문제 링크

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


문제 설명

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

 

입력

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

 

출력

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


제출 코드

import sys

input = sys.stdin.readline

n = int(input().rstrip())
nums = [0 for _ in range(10001)]

for _ in range(n):
    num = int(input().rstrip())
    nums[num] += 1

for i in range(1, 10001):
    num = nums[i]
    if num != 0:
        for j in range(num):
            print(i)

 

풀이

  • 메모리 제한이 있으므로, 입력받은 수를 모두 저장하는 것은 효율적이지 않다.
  • 10000까지의 숫자만 입력하므로, 1부터 10000까지의 리스트를 생성해 수를 입력받을 때마다 해당 인덱스에 1을 더해준다.
  • 인덱스의 수가 0이 아닌 경우, 저장된 수만큼 인덱스를 출력해준다.

 

알아둘 사항

import sys

input = sys.stdin.readline

n = int(input().rstrip())
nums = []
for _ in range(n):
    nums.append(int(input().rstrip()))
print(*sorted(nums), sep='\n')
  • 이렇게 하면 틀린다.
  • 정렬이라고 해서 진짜 정렬하려고만 하지 말자.
728x90