[백준17478_자바스크립트(javascript)] - 재귀함수가 뭔가요?

경이·2024년 6월 7일

𝑩𝑶𝑱 (𝒋𝒔)

목록 보기
60/325

🔴 문제

재귀함수가 뭔가요?


🟡 Sol

const fs = require('fs');
const path = process.platform === 'linux' ? '/dev/stdin' : 'Wiki\\input.txt';
const n = Number(fs.readFileSync(path));
const MESSAGE = [
  '"재귀함수가 뭔가요?"',
  '"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.',
  '마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.',
  '그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."',
  false,
  '라고 답변하였지.',
];

function recursive(depth) {
  if (depth === 0) {
    console.log('_'.repeat((n - depth) * 4) + '"재귀함수가 뭔가요?"');
    console.log(
      '_'.repeat((n - depth) * 4) + '"재귀함수는 자기 자신을 호출하는 함수라네"'
    );
    console.log('_'.repeat((n - depth) * 4) + '라고 답변하였지.');

    return;
  }
  for (const msg of MESSAGE) {
    msg && console.log('_'.repeat((n - depth) * 4) + msg);
    msg || recursive(depth - 1);
  }
}

console.log('어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.');
recursive(n);

🟢 풀이

문제 이름부터 재귀가 들어가는 재귀유형이지만
출력형태 때문에 틀렸습니다가 많이 나오는 문제이다.
먼저 재귀함수 호출 시 메세지를 조금 더 편하게 출력하기 위해 반복 출력할 문자 형태를 위와 같이 배열로 만들어 뒀다.
입력받은 n번만큼 재귀호출을 진행해주면 되는데 n번을 호출했을 경우 재귀를 탈출하면서 출력을 조금 다르게 해주어야 한다.
재귀함수를 계속해서 호출할때는 아까 만들어둔 메세지 배열을 순회하면서 호출하면된다.


🔵 Ref

profile
록타르오가르

0개의 댓글