N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
백준 2750,2751의 뒤를 이을 3연벙의 마지막 10989.
이번에는 더욱더 시간복잡도를 신경써야 한다.
이 문제는 계수 정렬 (Counting Sort)를 이용해서 푸는 문제이다.
근데 node.js에서는 입력을 받아 배열로 저장하는 과정부터 메모리초과가 나기때문에 풀수가 없었다;; (얼른 백준에서 해결해주길 바람..)
일단 다른 파이썬코드로 제출하고 Node.js 답안을 보니 맞춘 사람이 없다.
나중에 이게 맞는지 확인해봐야 겠다.
const input = require("fs")
.readFileSync("/dev/stdin")
.toString()
.trim()
.split("\n")
.slice(1)
.map((v) => Number(v));
const max = Math.max(...input);
const arr = new Array(max + 1).fill(0);
input.forEach((v, i) => {
arr[i]++;
});
arr.forEach((v, i) => {
if (v) {
arr[i].forEach((x) => console.log(x));
}
});