백준 코드 공부/파이썬

백준 10989 : 수 정렬하기 3 (Python)

GUuu9 2022. 2. 14. 15:39

문제

10989번: 수 정렬하기 3 (acmicpc.net)

 

10989번: 수 정렬하기 3

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

www.acmicpc.net


문제

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

입력

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

출력

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

예제 입력 1 복사

10
5
2
3
1
4
2
3
5
1
7

예제 출력 1 복사

1
1
2
2
3
3
4
5
5
7

출처

  • 문제를 만든 사람: baekjoon
  • 데이터를 추가한 사람: cgiosy
  • 문제의 오타를 찾은 사람: joonas

알고리즘 분류

시간 제한

  • Java 8: 3 초
  • Java 8 (OpenJDK): 3 초
  • Java 11: 3 초
  • Kotlin (JVM): 3 초
  • Java 15: 3 초

메모리 제한

  • Java 8: 512 MB
  • Java 8 (OpenJDK): 512 MB
  • Java 11: 512 MB
  • Kotlin (JVM): 512 MB
  • Java 15: 512 MB

채점 및 기타 정보

  • 이 문제의 채점 우선 순위는 2이다.

 

 


N = int(input())
list_n = []
for _ in range(N):
    list_n.append(input())
list_n = sorted(list_n)
for _ in list_n:
    print(_)

처음엔 단순하게 리스트로 입력 받아 정렬인줄 알았으나 1000개의 정수값리스트는 메모리를 많이 잡아 먹는지 계속해서 메모리 초과가 출력되었습니다.

 

import sys
input = sys.stdin.readline

N = int(input())
list = [0] * 10001

for _ in range(N):
    list[int(input())] += 1

for _ in range(10001):
    if list[_] != 0:
        for __ in range(list[_]):
            print(_)

입력 받을 수 있는 값의 최대는 10000이므로 입력 받은 문자를 해당 횟수만큼 순서대로 출력하는 방식으로 바꾸었습니다.

 


Git Hub

BaekJoon-Study/10989.py at python · GUuu9/BaekJoon-Study (github.com)

 

GitHub - GUuu9/BaekJoon-Study

Contribute to GUuu9/BaekJoon-Study development by creating an account on GitHub.

github.com