알고리즘/백준

[백준] 17478번 : 재귀함수가 뭔가요? - JAVA [자바]

DevelopJJong 2024. 1. 11. 17:19

문제

문제 링크 : https://www.acmicpc.net/problem/17478


수도코드 작성

일단 재귀를 계속 불러오는 거에 초점을 맞춰서 수도코드를 세우지 못했다.. 그냥 재귀가 머릿속에 안들어온다..


작성한 코드

import java.util.Scanner;

public class Main {
    static String underBar = "";

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.println("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다. ");
        call(sc.nextInt());

    }
    public static void call(int a){

        String temp = underBar;

        if(a == 0){
            System.out.println(temp + "\"재귀함수가 뭔가요?\" ");
            System.out.println(temp + "\"재귀함수는 자기 자신을 호출하는 함수라네\"");
            System.out.println(temp + "라고 답변하였지. ");
            return;
        }

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

        underBar += "____";

        call(a-1);

        System.out.println(temp + "라고 답변하였지. ");
        }

    }

보완할 점 / 헷갈린 점

underbar를 어떻게 해야 할 지가 어려운 포인트 였던 것 같다. 근데 막상 어떻게 푸는 지 알고나니까 생각보다 쉬웠다.. ㅠ
재귀를 꼭 이해하고 싶은데 가능할 지 모르겠다.