BOJ - 2438

0l0l·2021년 4월 19일
0

Algorithm

목록 보기
9/11

for문

별 찍기 - 1

별을 찍는 문제 1

◎ 문제

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

◎ 입력

첫째 줄에 N(1<=N<=100)이 주어진다.

◎ 출력

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


▣ 문제 접근
한 줄에 하나씩 출력한다고 생각해보자.
i번째 줄을 i행으로, 출력할 별의 갯수를 j개로 설정한다.
i행마다 별은 j개 찍혀야 한다. 즉, i번까지 찍혀야 함을 의미한다.

*       // 1행, 1개 : i=1, j=1
**      // 2행, 2개 : i=2, j=1,2
***     // 3행, 3개 : i=3, j=1,2,3
****    // 4행, 4개 : i=4, j=1,2,3,4
*****   // 5행, 5개 : i=5, j=1,2,3,4,5

▣ 코드

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


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

▣ 설명
하위 for문인 j번 실행이 끝나야 상위 for문인 i가 1씩 증가하여 다시 이중 for문이 실행된다.
이중 for문 채점 결과

이중 for문을 사용하지 않고 간단하게 for문 한 줄로 실행 가능하다.
그러나 출력 횟수의 차이의 이유인지 코드 길이가 짧다고 실행 시간이 빠른 것은 아니다.
한 줄 for문 채점 결과

// 입출력을 위해 line을 받아오는 코드 생략
rl.on('line', line => {
  const num = parseInt(line);
  let star = '';

  for(let i = 1; i <= num; i++) {
    console.log(star += '*');
  }
  
}).on('close', () => {
  process.exit();
})
profile
천방지축 빙글빙글

0개의 댓글