Algorism
나무 그리기
자라나라나무나무나
2022. 7. 22. 19:17
각 행별로 개행문자(\n)을 넣어주면서 *을 찍으며 출력 값 형태로 나무를 그려준다.
function answer(height) {
let str = "\n";
for (let i = 0; i < height; i++) {
// 1. 공백 처리 " "
for (let j = 0; j < height - i - 1; j++) {
str += " ";
}
// 2. * 처리 "*" 2n + 1
for (let j = 0; j < i * 2 + 1; j++) {
str += "*";
}
// 3. 개행문자 추가
str += "\n";
}
return str;
}
let input = [
3,
5,
7,
];
for (let i = 0; i < input.length; i++) {
console.log(`#${i + 1} ${answer(input[i])}`);
}
풀이
이중 for문을 사용하여 큰 for문은 height의 길이만큼 반복이 되어야 트리의 윤곽이 잡힌다.
그와 동시에 공백과 별을 동시에 그려야 트리가 완성될 수 있다.
1. 공백처리
for (let j = 0; j < height - i - 1; j++) {
str += " ";
}
공백은 입력값 보다 -1만큼의 갯수를 가지고 있다. 그리고 개행을 할 수록 i만큼 공백의 수가 작아지를 것을 알 수 있다.
입력값이 3일 경우에 첫번째 줄 공백은 2칸이고 두번째줄 공백은 1칸이다.
2. * 처리
for (let j = 0; j < i * 2 + 1; j++) {
str += "*";
}
별의 갯수는 2n -1 이기 때문에 i*2 + 1 로 표현하였다.