BOJ - 2741

0l0l·2021년 4월 12일
0

Algorithm

목록 보기
7/11

for문

N 찍기

1부터 N까지 출력하는 문제

◎ 문제

자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램 작성
(※ 시간 제한 : 1초)

◎ 입력

첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다.

◎ 출력

첫째 줄부터 N번째 줄까지 차례대로 출력


▣ 코드

1) 첫번째 시도 (시간초과)

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.on('line', line => {
  const num = parseInt(line);

  for(let i = 1; i <= num; i++) {
    console.log(i);
  }
}).on('close', () => {
  process.exit();
})

2) 두번째 시도 (성공)

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.on('line', line => {
  let arr = [];
  const num = parseInt(line);
  
  for(let i = 1; i <= num; i++) {
    arr += i + "\n";
  }
  console.log(arr);
}).on('close', () => {
  process.exit();
})

▣ 설명
첫번째 작성한 코드는 for문을 n번 돌면서 한 줄씩 출력한다.
출력은 문제 없으나 실행하는데 시간 초과하는 문제가 발생했다.

아래와 같이 로직을 바꿔 '시간 제한' 조건을 충족시켰다.

  1. 배열 생성
  2. for문을 한 번만 실행
    2-1. 배열에 값과 개행(줄바꿈) 문자 추가
  3. 한 번에 모든 값 출력

반복문을 사용하는 경우, 매번 반복하고 출력하는 방식이 아니라
배열을 이용해 출력할 값을 모두 추가하여 마지막에 출력하는 방식으로 실행 시간을 줄여 효율적인 코드 작성하도록 하자.

profile
천방지축 빙글빙글

0개의 댓글