본문 바로가기

개발/JavaScript

[자바스크립트] 별 찍기 응용문제 2개

Q1.

function star_Q3(n) {
    let temp = (2*n)-1;                             // (가장 아래 별의 갯수 기준) 즉, temp = 2n-1
    
    console.log(`Start star, temp is ${temp}`);
    for(let i=n; i>0; i--) {                        // star_Q3의 인자는 탑 높이(n)
        console.log("");
        for(let j=1; j<=temp; j++){                 // 가장 아래의 별 갯수(temp)만큼 j 루프
            if(i>j || j>n){                         // 탑 현재 높이(i) >= 별 갯수(j)보다 크거나 같을 경우, 별 갯수(j)가 탑 높이(n)보다 크거나 같을 경우 공백 처리
                process.stdout.write(" ");
            } else {                                // 공백 처리된 나머지 부분에 별 찍기
                process.stdout.write("*");
            }            
        }
        n++;                                        // 탑을 한 층씩 쌓을 때마다 탑 높이값을 +1 해준다.
    }
    
}

console.time();
star_Q3(10);
console.log("\n====================");
console.timeEnd();

console.log("End star_Q3");

 


Q2.

function star_Q4(n) {
    let temp = n*2;                                         // temp = 별탑 층수*2 = 가장 아래 별의 갯수 (기준)
    
    console.log("Start star_Q4");
    for(let i=1; i<=n; i++) {                               // star_Q4의 인자는 탑 높이(n)
        console.log("");
        for(let j=temp; j>0; j--){                          // 가로 기준이 될 temp값만큼 루프.
            if(i < j && j <= (temp-i)){                     // 현재 층수보다 현재 가로 별 갯수값이 더 크거나, 별 바닥 갯수(temp) - 현재 층수(i)보다 j가 작을 때 공백
                process.stdout.write(" ");
            } else {
                process.stdout.write("*");
            }
        }
    }    
}

console.time();
star_Q4(10);
console.log("\n====================");
console.timeEnd();

console.log("End star_Q4");