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

그린·2023년 3월 7일
0

백준

목록 보기
19/44
post-thumbnail

[백준] 10989번 수 정렬하기3


✔️문제

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

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

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


✔️풀이

🙋‍♀️내 풀이

import sys
n = int(sys.stdin.readline())
arr = [0] * 10000 # 수의 최댓값만큼 배열 생성
for _ in range(n):
  arr[int(sys.stdin.readline())-1] += 1

for i in range(10000):
  if arr[i]:
    for _ in range(arr[i]):
      print(i+1)

처음에는 수를 다 배열에 저장하고 정렬을 한 후, 오름차순으로 출력하는 코드로 작성했다. 하지만 배열에 모두 저장하는 빙식은 메모리 초과로 실패했다.

두번째로 숫자:숫자가 입력된 횟수 로 딕셔너리를 만들었다. 하지만 이 방법 또한 숫자를 정렬해야 하므로 시간 초과로 실패했다.

질문 게시판 등을 활용한 결과, 입력을 input()이 아닌 sys.stdin.readline() 이용하고 배열의 인덱스를 활용하여 통과했다.

0개의 댓글