[Algorithm] 백준 10989 (javaScript)

swing·2023년 6월 14일
0

[Algorithm]

목록 보기
20/96

문제

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));
  }
});

BOJ 10989

profile
if(기록📝) 성장🌱

0개의 댓글