계단을 오르듯이

17478. 재귀함수가 뭔가요? 본문

알고리즘/백준_JAVA

17478. 재귀함수가 뭔가요?

happyAyun 2021. 12. 31. 14:07

- 글자가 많았기에 제시된 글을 복사하는 방법으로 문장의 오류로 인한 틀림의 가능성을 없게 하였다.

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

public class Main {

	static StringBuilder sb = new StringBuilder();
	static String str = "____";
	static int n;
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		
		n = Integer.parseInt(in.readLine());
		sb.append("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.\n");
		speak(n);
		sb.append("라고 답변하였지.");
		System.out.println(sb);
	}
	
	private static void speak(int num) {
		if(num < 0) return;
		for(int i=0;i<n-num;i++) {
			sb.append(str);
		}
		sb.append("\"재귀함수가 뭔가요?\"\n");
		for(int i=0;i<n-num;i++) {
			sb.append(str);
		}
		if(num == 0) {
			sb.append("\"재귀함수는 자기 자신을 호출하는 함수라네\"\n");
			return;
		}
		sb.append("\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n");
		for(int i=0;i<n-num;i++) {
			sb.append(str);
		}
		sb.append("마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.\n");
		for(int i=0;i<n-num;i++) {
			sb.append(str);
		}
		sb.append("그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"\n");
		speak(--num);
		for(int i=0;i<n-num;i++) {
			sb.append(str);
		}
		sb.append("라고 답변하였지.\n");
	}
}

'알고리즘 > 백준_JAVA' 카테고리의 다른 글

4811. 알약  (0) 2022.01.05
17073. 나무 위의 빗물  (0) 2021.12.31
17836. 공주님을 구해라  (0) 2021.12.31
18429. 근손실  (0) 2021.12.31
20154. 이 구역의 승자는 누구야  (0) 2021.12.31