백준_17478_재귀함수가 뭔가요?

임정민·2023년 1월 24일
2

알고리즘 문제풀이

목록 보기
24/173
post-thumbnail

코딩테스트 연습 스터디 진행중 입니다. ✍✍✍
Notion : https://www.notion.so/1c911ca6572e4513bd8ed091aa508d67

문제

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

[나의 풀이]

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {

    static BufferedWriter recur(int n, int m, BufferedWriter bw) throws IOException {

        bw.write("_".repeat(4 * (m - n)) + "\"재귀함수가 뭔가요?\"\n");

        if (n == 0) {

            bw.write("_".repeat(4 * (m - n)) + "\"재귀함수는 자기 자신을 호출하는 함수라네\"\n");
        } else {
            bw.write("_".repeat(4 * (m - n)) + "\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n");
            bw.write("_".repeat(4 * (m - n)) + "마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.\n");
            bw.write("_".repeat(4 * (m - n)) + "그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"\n");

            recur(n - 1, m, bw);

        }

        bw.write("_".repeat(4 * (m - n)) + "라고 답변하였지.\n");

        return bw;

    }

    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int n = Integer.parseInt(br.readLine());
        int m = n;

        bw.write("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.\n");
        bw = recur(n, m, bw);
        bw.flush();

    }

}

재귀함수의 개념을 되짚어 볼 수 있는 문제였습니다. 재귀함수를 돌리며 bw에 문자열을 적절히 추가하는 것이 관건이였습니다. 또한 repeat(n) 함수를 사용하여 문자열 간단하게 반복할 수 있었습니다.🍎🍎🍎

감사합니다!🐥🐥🐥

profile
https://github.com/min731

0개의 댓글