백준 [10989번] : 수 정렬하기 3
문제
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
주의사항
풀이과정
이전 수 정렬 문제와 다르게, 메모리가 상당히 빡세게 제한되어 있다. 따라서, 기존과 같은 방식으로 풀면 메모리 초과로 제출 오류가 발생한다.
- 제출 코드
import sys
N = int(input())
check_list = [0] * 10001
for _ in range(N):
input_num = int(sys.stdin.readline())
check_list[input_num] = check_list[input_num] + 1 # 해당 인덱스에 1씩 추가
print(check_list)
for i in range(10001):
if check_list[i] != 0: # 1 이상인 인덱스 출력
for _ in range(check_list[i]):
print(i) # 2 이상이라면 해당 값만큼 반복하여 출력
sys
를 이용하여 정렬할 수들을 입력받았다.input
을 이용하면 메모리 초과 여지가 있기 때문이다.check_list
라는 array를 미리 선언하여 메모리 초과를 방지하였다.
Author And Source
이 문제에 관하여(백준 [10989번] : 수 정렬하기 3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@redorangeyellowy/백준-10989번-수-정렬하기-3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)