백준 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);
}
}
총평
난이도
⭐★★★★
후기
사피 수업 과정 중 해결한 문제
개선할 점
없습니다