BOJ - 2439

0l0l·2021년 4월 19일
0

Algorithm

목록 보기
10/11

for문

별 찍기 - 2

별을 찍는 문제 2

◎ 문제

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
(오른쪽을 기준으로 정렬한 별 예제 출력 참고)

◎ 입력

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

◎ 출력

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

◎ 예제 출력

// N=5인 경우
    *
   **
  ***
 ****
*****

▣ 문제 접근

    *   // 1행, 공백 4, 별 1개 : i=1, k=4,3,2,1, j=1
   **   // 2행, 공백 3, 별 2개 : i=2, k=4,3,2,   j=1,2
  ***   // 3행, 공백 2, 별 3개 : i=3, k=4,3,     j=1,2,3
 ****   // 4행, 공백 1, 별 4개 : i=4, k=4,       j=1,2,3,4
*****   // 5행, 공백 0, 별 5개 : i=5, k=0,       j=1,2,3,4,5

별 찍기-1과 유사하지만 위 문제는 오른쪽 정렬한 모습으로 공백이 추가되었다.
입력을 N이라고 했을 때, i행에서 'N(i) = 공백(k) 갯수+별(j) 갯수' 이다.
i행에서 공백은 N-1부터 1씩 감소하는 형태로 N-j개 찍힌다. 즉, i보다 크거나 같을 때까지 찍혀야 한다.
i행에서 별은 1부터 1씩 증가하는 형태로 j개 찍힌다. 즉, i보다 작거나 같을 때까지 찍혀야 한다.

▣ 코드

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 k = num-1; k >= i; k--) {
      star += ' ';
    }
    for(let j = 1; j <= i; j++) {
      star += '*';
    }
    star += '\n';
  }
  console.log(star);
}).on('close', () => {
  process.exit();
})
profile
천방지축 빙글빙글

0개의 댓글