[구현] 백준 17478 재귀함수가 뭔가요?

Halo·2025년 5월 30일
0

Algorithm

목록 보기
55/85
post-thumbnail

🔍 Problem

[백준] 17478 재귀함수가 뭔가요?


📃 Input&Output


🌁 문제 배경

가. 문제 설명
재귀를 사용하여 올바른 출력을 만드는 구현 문제이다.

나. 접근 방법
재귀 스택을 그려서 원하는 곳에 입출력이 이루어지게 코드를 작성하였다.

다. 사용할 알고리즘 선택
재귀 알고리즘


📒 해결 과정

가. Count를 하여 원하는 지점에서 종료

재귀함수는 자기 자신을 호출하는 함수라네

위의 텍스트를 출력하게 해야한다.

if (cnt == n) {
            System.out.println("____".repeat(cnt) + "\"재귀함수는 자기 자신을 호출하는 함수라네\"");
            System.out.println("____".repeat(cnt) + "라고 답변하였지.");

            return;
        }

나. 호출별 출력 상이
재귀함수 호출과 종료별로 문자열이 앞에 출력되고 뒤에 출력되는 것을 생각하여 재귀 함수 선언부 앞 뒤에 해당 문자열 출력을 배치한다.

전체코드 참고


💻 Code

import java.util.*;
import java.io.*;
import java.lang.*;

public class P17478 {


    public static void gogo(int n, int cnt) {
        System.out.println("____".repeat(cnt) + "\"재귀함수가 뭔가요?\"");
        if (cnt == n) {
            System.out.println("____".repeat(cnt) + "\"재귀함수는 자기 자신을 호출하는 함수라네\"");
            System.out.println("____".repeat(cnt) + "라고 답변하였지.");

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


        gogo(n, cnt + 1);
        System.out.println("____".repeat(cnt) + "라고 답변하였지.");

    }

    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);

        int N;

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


    }
}

🤔 느낀점

재귀 스택을 그리면 간단히 풀리는 문제이다. 역시 손으로 직접 뭐든지 다 풀어봐야 한다.

profile
새끼 고양이 키우고 싶다

0개의 댓글