출처
백준 온라인 저지
문제
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
하지만, 오른쪽을 기준으로 정렬한 별을 출력하시오
*
**
풀이
2438번 문제와 유사하지만 공백이란 문제가 있습니다.
공백은 ' '으로 처리가 가능합니다.
먼저 for 문을 두 번 돌려줍니다. 첫 번째 for문은 줄 바꿈을 위한 반복문이라 생각하고
두 번째 for문은 값을 누적을 위한 반복문으로 생각하시면 됩니다.
두 번째 for문에서 i(해당 줄)과 j를 비교하여 *과 ' '을 더해줍니다.
코드
let input = require('fs').readFileSync('/dev/stdin').toString();
let num = Number(input);
for (let i = 0; i < num; i++) {
let star = '';
for (let j = num - 1; j >= 0; j--) {
star += j <= i ? '*' : ' ';
}
console.log(star);
}
다른 방식
join 메서드를 사용해봤습니다.
Array(num)으로 배열을 생성하고 fill 메서드로 배열의 값을 공백으로 채워줍니다.
그 후 배열 마지막 값 부터 시작하여 star 배열에 *을 넣어줍니다.
let input = require('fs').readFileSync('/dev/stdin').toString();
let num = Number(input);
let star = new Array(num).fill(' ');
for (let i = num - 1; i >= 0; i--) {
star[i] = '*';
console.log(star.join(''));
}