반응형
2444번 문제, 별 찍기 - 7
문제 링크
문제 설명
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력
첫째 줄에 N ( 1 <= N <= 100 )이 주어집니다.
출력
첫째 줄부터 2 x N - 1번째 줄까지 차례대로 별을 출력합니다.
입출력 예
예제 입력 | 예제 출력 |
5 | * *** ***** ******* ********* ******* ***** *** * |
해결 과정
1. 입력 방법 중 fs 모듈을 통해 N을 입력받고 Number 타입으로 변환해 주었습니다.
2. 두 개의 for loop 중에서 첫 번째는 1부터 N-1까지의 공백과 별을 출력했습니다.
3. 두 개의 for loop 중에서 두 번째는 N부터 1까지의 공백과 별을 출력했습니다.
제출 코드
/* 1. N을 fs module을 통해 입력 받고 Number type으로 변환 */
const fs = require('fs');
const N = Number(fs.readFileSync('/dev/stdin'));
/* 2. 1부터 N-1까지 공백과 별 찍기 */
for(let i=1; i < N; i++){
let blank = ' '.repeat( (N-i) );
let stars = '*'.repeat( i+(i-1) );
console.log( blank + stars );
}
/* 3. N부터 1까지 공백과 별 찍기 */
for(let j=N; j > 0; j--) {
let blank = ' '.repeat( (N-j) );
let stars = '*'.repeat( j+(j-1) );
console.log( blank + stars );
}
또 다른 풀이
const N = Number(require('fs').readFileSync('/dev/stdin'));
let start = 0;
let end = N * 2 - 2;
let result1;
let result2 = [];
let star = "*".repeat(N * 2 - 1).split("");
for (let i = 0; i < N; i++) {
result2.push(star.join(""));
star[start] = " ";
star[end] = "";
start++;
end--;
}
result1 = result2.slice().reverse().slice(0, -1);
console.log(result1.concat(result2).join("\n"));
위 코드는 start와 end를 선언하고 증감하여 하나의 for loop으로 해결한 방식입니다.
반응형
'ALGORITHM > Baekjoon' 카테고리의 다른 글
[Javascript] 백준 10773번 문제, 제로 (feat.stack, reduce, Node.js) (24) | 2023.04.08 |
---|---|
[Javascript] 백준 1316번 문제, 그룹 단어 체커 (feat.slice, includes, Node.js) (16) | 2023.04.01 |
[Javascript] 백준 2750번 문제, 수 정렬하기 (feat.shift, sort, Node.js) (41) | 2023.03.26 |
[Python] 백준, 파이썬 입력받기 (feat.input, split, map) (24) | 2023.03.12 |
[Javascript] 백준, Node.js 입력받기 (feat.readline, fs) (25) | 2023.03.04 |