백준 - 17478번(재귀함수가 뭔가요?)

최지홍·2022년 2월 5일
0

백준

목록 보기
18/145

문제 출처: https://www.acmicpc.net/problem/17478


문제

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

  • 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대학교가 자신과 맞는가에 대한 고민을 항상 해왔다.

  • 중앙대학교와 자신의 길이 맞지 않다고 생각한 JH 교수님은 결국 중앙대학교를 떠나기로 결정하였다.

  • 떠나기 전까지도 제자들을 생각하셨던 JH 교수님은 재귀함수가 무엇인지 물어보는 학생들을 위한 작은 선물로 자동 응답 챗봇을 준비하기로 했다.

  • JH 교수님이 만들 챗봇의 응답을 출력하는 프로그램을 만들어보자.


import java.util.Scanner;

public class Main {

    private static StringBuilder underLine = new StringBuilder();
    private static StringBuilder sb = new StringBuilder();

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();

        sb.append("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.\n");
        print(N);
        System.out.println(sb);
        scanner.close();
    }

    private static void print(int n) {
        sb.append(underLine + "\"재귀함수가 뭔가요?\"\n");
        if (n <= 0) {
            sb.append(underLine + "\"재귀함수는 자기 자신을 호출하는 함수라네\"\n");
            sb.append(underLine + "라고 답변하였지.\n");
            return;
        }

        sb.append(underLine + "\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n")
                .append(underLine + "마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.\n")
                .append(underLine + "그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"\n");

        underLine.append("____");
        print(--n);
        underLine.setLength(underLine.length() - 4);
        sb.append(underLine + "라고 답변하였지.\n");
    }

}

  • 재귀함수를 공부하며 처음으로 푼 문제이다.
  • 한번에 풀지 못했지만, 재귀함수의 기저조건을 판단해보면서 공부할 수 있었다.
  • 언더바를 넣는 것이 조금 까다로웠지만, StringBuilder의 크기를 조절하는 방식으로 처리하였다.
profile
백엔드 개발자가 되자!

0개의 댓글