for문
별을 찍는 문제 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();
})