-
[백준] 10989번 수 정렬하기 3Algorithm Study/Python 2021. 5. 24. 21:18
https://www.acmicpc.net/problem/10989
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
풀이
입력이 1000만 개까지 들어올 수 있기 때문에 1000만 사이즈의 리스트를 생성하면 메모리 8MB에서 해결을 할 수 없다.
하지만 수의 범위가 10000까지이기 때문에 숫자는 최대 1만까지고 그 이상은 중복되어 나타난다는 뜻이다.import sys N = int(sys.stdin.readline().strip()) numbers = [0 for _ in range(10001)] for i in range(N): numbers[int(sys.stdin.readline())] += 1 for i in range(10001): if numbers[i] != 0: for j in range(numbers[i]): print(i)
1만 개 크기의 배열을 생성한 뒤 들어오는 숫자의 갯수를 세아려서 0이 아닌 경우에 갯수 만큼 출력하면 배열과 정렬의 문제를 둘 다 해결 할 수 있다.
'Algorithm Study > Python' 카테고리의 다른 글
[백준] 1026번 보물 (0) 2021.05.24 [백준] 1406번 에디터 (0) 2021.05.24 [백준] 1920번 수찾기 (0) 2021.05.23 [백준] 1182번 부분수열의 합 (0) 2021.05.20 [백준] 3055번 탈출 (0) 2021.05.20