알고리즘

백준 JS | 17478번 재귀함수가 뭔가요?

3jun 2022. 6. 21. 22:15
출처: 백준 온라인저지

https://www.acmicpc.net/problem/17478

 

17478번: 재귀함수가 뭔가요?

평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대

www.acmicpc.net

✅ Solution 

const input = require('fs').readFileSync('example.txt').toString().trim();

const question = [
  '어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.',
  '"재귀함수가 뭔가요?"',
  '"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.',
  '마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.',
  '그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."',
  '"재귀함수는 자기 자신을 호출하는 함수라네"',
  '라고 답변하였지.',
];
const num = parseInt(input);
const hyphen = '____';
let answer = '';

for (let i = 0; i <= num; i++) {
  if (i === 0) {
    answer += question[0] + '\n';
    answer += question[1] + '\n';
    answer += question[2] + '\n';
    answer += question[3] + '\n';
    answer += question[4] + '\n';
  } else if (i === num) {
    answer += hyphen.repeat(i) + question[1] + '\n';
    answer += hyphen.repeat(i) + question[5] + '\n';
    answer += hyphen.repeat(i) + question[6] + '\n';
  } else {
    answer += hyphen.repeat(i) + question[1] + '\n';
    answer += hyphen.repeat(i) + question[2] + '\n';
    answer += hyphen.repeat(i) + question[3] + '\n';
    answer += hyphen.repeat(i) + question[4] + '\n';
  }

  if (i === num) {
    for (let j = i - 1; j >= 0; j--) {
      answer += hyphen.repeat(j) + question[6] + '\n';
    }
  }
}

console.log(answer);

1. 0 ~ input 값, input 값 ~ 0 까지 2번의 loop

2. loop 에 따라 하이픈이 변경되어야 한다.

3. 0 ~ input 값 - 1 까지의 문단, input 값 문단 그리고 input 값 ~ 0 까지의 문단을 분리한다. 

👀 다른 사람의 답안

https://www.acmicpc.net/source/44772371

 

로그인

 

www.acmicpc.net

 

🔥 유사한 로직이지만 훨씬 간단한 알고리즘으로 구현된 예시

 

https://velog.io/@dlsgkrdl23/JavaScript-17478-%EB%B0%B1%EC%A4%80

 

[JavaScript] 17478 | 백준

재귀함수가 뭔가요?

velog.io