for문
별을 찍는 문제 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문 한 줄로 실행 가능하다.
그러나 출력 횟수의 차이의 이유인지 코드 길이가 짧다고 실행 시간이 빠른 것은 아니다.
// 입출력을 위해 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();
})