[백준] 2715 - 수 정렬하기 2

Jang·2022년 9월 16일
0

백준

목록 보기
3/6
post-thumbnail

문제


try 1

  • 시간초과

    • 바로 이전 문제와 거의 똑같아서 코드를 그대로 제출했더니 시간초과

    • const fs = require("fs");
      let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
      const N = parseInt(input[0]);
      let arr = [];
      
      for (i = 1; i <= N; i++) {
        arr.push(parseInt(input[i]));
      }
      arr.sort((a, b) => {
        if (a > b) {
          return 1;
        } else {
          return -1;
        }
      });
      for (k of arr) {
        console.log(k);
      }

try 2

  • input자체가 split으로 배열이 되었으므로 굳이 배열 arr을 만들어 데이터를 넣을 필요가 없어서 arr 삭제

  • input[0]에 있는 N이 출력에는 필요없으므로 shift()를 이용해 삭제

    const fs = require("fs");
    let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
    const N = parseInt(input[0]);
    
    input.shift();
    
    input.sort((a, b) => {
    if (a > b) {
      return 1;
    } else {
      return -1;
    }
    });
    for (k of input) {
    console.log(k);
    }
    • 결과 : 시간 초과

try 3

  • sort 함수가 느린건가 싶어서 다른 방법을 찾아보았으나 그렇다 할만한 방법이 없었고 문제에서도 내장함수를 이용하라고 명시되어있음.

  • 그래도 기존에는 sort()가 길었는데 input.sort((a, b) => a - b); 만으로도 가능한 걸 알게됨

  • 하지만 여전히 시간초과

    const fs = require("fs");
    let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
    input.shift();
    
    input.sort((a, b) => a - b);
    for (k of input) {
      console.log(parseInt(k));
    }

try 4 (정답)

  • 구글에 검색해보니 console.log()를 하나씩 출력해서 시간초과가 난것임을 알게 됨.

  • console.log(input.join("\n")); 을 사용해 하나의 문자열로 출력 가능

    const fs = require("fs");
    let input = fs.readFileSync("BAEKJOON/dev/stdin.txt").toString().trim().split("\n");
    input.shift();
    
    input.sort((a, b) => a - b);
    console.log(input.join("\n"));



마무리

  • 알게 된 것
    • input.sort((a, b) => a - b);
    • console.log(input.join("\n")); (여러 줄을 하나의 문자열로 출력하므로 빠름)

0개의 댓글