728x90
출처: 백준
문제
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
예제 입력 1
5
예제 출력 1
*
**
***
****
*****
내 코드
풀이 1
const readline = require("readline");
const rl = readline.createInterface({
input : process.stdin,
output : process.stdout
});
let input;
rl.on("line", function(line){
input = line;
rl.close();
}).on("close", function(){
let count = input;
let blanks;
let stars;
for(let i=0; i<count; i++){
blanks = '';
stars = '';
for(let j=count; j>i+1; j--){
blanks += ' ';
}
for(let k=0; k<=i; k++){
stars += '*';
}
console.log(blanks+stars);
}
process.exit();
})
풀이 2
const readline = require("readline");
const rl = readline.createInterface({
input : process.stdin,
output : process.stdout
});
let num;
rl.on("line", function(line){
num = +line; // 5
rl.close();
}).on("close", function(){
let stars = '';
for(let i=0; i<num; i++){ // 0, 1, 2, 3, 4
for(let k=num-1; k>=0; k--){ // 4, 3, 2, 1, 0
if(i<k) stars += ' ';
else stars += '*';
}
stars += '\n';
}
console.log(stars);
process.exit();
})
결과
> 5 * ** *** **** ***** |
풀이 1에서는 각 라인을 담당하는 for문과 그 안에서 공백을 찍는 for문, *을 찍는 for문으로 반복문을 총 3번 사용했다.
풀이 2에서는 조금 다른 방식으로 해결했다. 반복문과 조건문을 같이 사용했다.
바깥쪽 for문은 별 N개까지의 라인을 담당하고 안쪽 for문은 해당 라인의 내용을 담당한다.
if문에 따라 i가 k보다 작으면 공백이 출력된다.
5가 입력됐을 경우
○○○○★ 안쪽 for문에서 4부터 0까지 반복한다. 공백을 찍다가 k가 0이 되어 i와 같아지면 *이 찍힌다.
○○○★★
○○★★★
○★★★★
★★★★★ i가 4이기 때문에 항상 k보다 크거나 같다. else에 따라 항상 *만 찍힌다.
728x90
'프로그래밍 > 백준 알고리즘' 카테고리의 다른 글
[백준 / node.js] 10952번: A+B - 5 (0) | 2021.07.27 |
---|---|
[백준 / node.js] 10871번: X보다 작은 수 (0) | 2021.07.26 |
[백준 / node.js] 2438번: 별 찍기 - 1 (0) | 2021.07.24 |
[백준 / node.js] 11022번: A+B - 8 (0) | 2021.07.24 |
[백준 / node.js] 11021: A+B - 7 (0) | 2021.07.24 |
댓글