[백준/JS] 2742번 - 기찍 N + console.log() 시간초과

Pakxe·2022년 10월 11일
0

PS

목록 보기
9/16
post-thumbnail

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

알고리즘 분류

  • 구현

풀이

이 문제를 푸는 방법은 반복문을 거꾸로 돌면 되므로 어렵지 않다.
그렇지만 매 반복문마다 console.log로 출력한다면 시간초과가 발생한다. 그렇기 때문에 이 문제를 시간안에 풀려면 문자열 변수를 만들어서 숫자와 개행문자를 계속 문자열에 덧붙이고, 마지막에 한번의 console.log로 모든 숫자를 출력해야한다.

왜 일까?
js의 console.log() 한번에는 50ms가 걸린다. 이 문제에서 반복문이 도는 최대 횟수는 100000번이다.
만약 매 반복문마다 console.log()를 사용한다면 100000*50ms = 5000000ms = 5000s = 5000초나 된다.
이 문제의 시간 제한은 1초이므로 당연히 시간초과가 날 것이다.

하지만 문자열 연산은 당연히 50ms보다는 작다.
따라서 console.log() 호출을 최소화하는 습관을 들이자.

코드

var fs = require('fs');
var n = fs.readFileSync('/dev/stdin').toString().trim();

let str = '';
for(let i = n; i > 0; i--){
    str += i + '\n';
}

설명에 오류가 있거나 이해가 어려운 부분이 있으면 댓글이나 이메일(pigkill40@naver.com)로 문의해 주시면 도움을 드리겠습니다.

0개의 댓글

관련 채용 정보