프론트엔드 센트럴파크 (☞゚ヮ゚)☞

나무 그리기 본문

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 로 표현하였다.

'Algorism' 카테고리의 다른 글

벽돌 옮기기  (0) 2022.07.26
ox 퀴즈  (0) 2022.07.25
배열의 element들의 값이 많을 때, 정해진 합 구하기  (0) 2022.07.22
두 수 최대 합  (0) 2022.07.21
길이가 동일한 배열의 값 빼기  (0) 2022.07.21
Comments