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

Updated:

Java

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

문제

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

문제 출처

접근 방법

재귀 함수를 생성하여, 조건에 따르게 문장을 출력한다.

구현

재귀 함수의 반복 시점이 올라 갈 때마다, “__“가 처음에 삽입 되고 문장을 출력하므로, StringBuilder를 통하여 재귀 함수 처음에 만들고 각 문장에 대입하는 식으로 해결한다.

코드

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

public class Main {

	static int n = 0;
	public static void main(String[] args) throws IOException {
		//System.setIn(new FileInputStream("res/input.txt"));	//제출 할 때 주석해야함
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	n = stoi(br.readLine());
    	System.out.println("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.");
    	
    	recursive(0);
	}
	
	static void recursive(int lv) {
		StringBuilder sb = new StringBuilder();
		for(int i = 0; i < lv; i++) {
			sb.append("____");
		}
		System.out.println(sb + "\"재귀함수가 뭔가요?\"");

		if(n == lv) {		// 최대 반복 횟수만큼 반복했으면 답변을 하고 재귀를 종료한다.
			System.out.println(sb + "\"재귀함수는 자기 자신을 호출하는 함수라네\"");
			System.out.println(sb + "라고 답변하였지.");
			return;
		}
		System.out.println(sb + "\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.");
		System.out.println(sb + "마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.");
		System.out.println(sb + "그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"");
		recursive(lv + 1);		// 재귀함수 종료 후 이 시점으로 복귀하므로, 남은 문장이 출력된다.
		System.out.println(sb + "라고 답변하였지.");
	}
	
	static int stoi(String str) {
    	return Integer.parseInt(str);
    }
}

총평

난이도

⭐★★★★

후기

사피 수업 과정 중 해결한 문제

개선할 점

없습니다