[백준] 2448번 - 별 찍기 11 Javascript(NodeJs)

JeongYong·2022년 10월 13일
0

Algorithm

목록 보기
21/275

문제 링크

https://www.acmicpc.net/problem/2448

풀이

알고리즘: 재귀

소스코드

const fs = require('fs');
let H = fs.readFileSync('/dev/stdin').toString().trim() * 1; //높이
let outputArr = new Array(H);
let output = '';
for (let i = 0; i < H; i++) {
    outputArr[i] = new Array(H*2-1);
    outputArr[i].fill(' ');
};
markStar11((H*2)/2-1,0, H);
function markStar11(x, y, h) {
    //x,y => 꼭지점 좌표 
    //h => 높이
    if(h===3) {
        //그려주면됨.
        outputArr[y][x] = '*';
        outputArr[y+1][x-1] = '*';
        outputArr[y+1][x+1] = '*';
        for(let i=x-2; i<=x+2; i++) {
            outputArr[y+2][i] = '*';
        }
    } else {
        markStar11(x,y,h/2); //상단
        markStar11(x-3*h/2/3,y+h/2,h/2);
        markStar11(x+3*h/2/3,y+h/2,h/2);
    }
}

for (let i = 0; i < H; i++) {
    if(i === H-1) {
        output += `${outputArr[i].join('')}`;
    } else {
        output += `${outputArr[i].join('')}\n`;
    }
}
console.log(output);

0개의 댓글