백준 2751번 수 정렬하기 2 - node.js

박효진 (@gywlsp)

이 글은 백준 2751번 수 정렬하기 2를 풀이한다. 문제 링크
코드는 javascript로 작성하였다.

문제 파악

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

입력

  • 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다.
  • 둘째 줄부터 N개의 줄에는 숫자가 주어진다.
  • 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다.
  • 수는 중복되지 않는다.

예제 입력

5
5
4
3
2
1

출력

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

예제 출력

1
2
3
4
5

시간 제한

  • 2초

메모리 제한

  • 128MB

문제 풀이

알고리즘

javascript sort 메서드를 이용해 수를 정렬한 후 결과 값을 출력하였다.

참고

시간 초과

처음에 결과 값을 출력할 때 정렬된 배열의 요소 하나씩 출력했더니 시간 초과가 되었다. 구글링해보니 console.log()가 느려 생긴 문제였다. 출처

그래서 결과값 배열의 요소들을 javascript join 메서드로 합친 후 출력하니 문제가 해결되었다.

구현

//https://www.acmicpc.net/problem/2751

let input = [];

require('readline')
  .createInterface(process.stdin, process.stdout)
  .on('line', function (line) {
    input.push(line.trim());
  })
  .on('close', function () {
    const [N, ...numList] = input.map((e) => Number(e));
    const result = numList.sort((a, b) => a - b);
    console.log(result.join('\n'));
  });