✏️ 문제

조카가 나무 그리기를 어려워 하고 있다. 어린 조카를 위해 나무를 그려주는 프로그램을 만들어주자.
자연수를 높이로 입력 받고 대칭형 형태로 나무 문자열을 만들어 반환한다.
각 행 별로 개행 문자(/n)를 넣어주면서 *을 찍이며 출력 값 형태로 나무를 그려준다.
입력값

3, 5, 7

📝 풀이

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;
}
  1. height의 값만큼 높이와 대칭형을 먼저 기억해야 한다.
    만약 height가 3일 경우 상단부터 1 > 3 > 5 일 것 이고, 5일 경우 1 > 3 > 5 > 7 > 9 이다.
  2. 대칭이 되어 *이 찍힐 수 있도록 먼저 공백 처리를 해준다.
  3. 이중 for문을 이용하여 j는 0부터 height -i -1 만큼 순회하며 대칭이 될 수 있게 공백을 추가 해준다.
  4. 한 줄이 끝나면 줄 바꿈이 될 수 있도록 \n을 넣어 개행 문자를 추가한다.
  5. 2n + 1 처리를 위해 for문을 이용하여 j가 i 2 +1만큼 이 찍히게 한다.
    예를 들어 j가 0일 경우 0 2 + 1 = 1, j가 1일 경우 1 2 + 1 = 3 ... 이렇게 찍히게 되어
    1번에서 말했던 것 처럼 대칭형으로 1 > 3 > 5 로 찍혀 출력되게 될 것이다.
    ❗️ 각 for문이 각자의 역할을 잘 하도록 코드를 구성해보자.
profile
#UXUI #코린이

0개의 댓글