개발/JavaScript
[자바스크립트] 별 찍기 응용문제 2개
고매
2023. 9. 20. 18:38
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");