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

U·2023년 8월 8일

백준

목록 보기
39/116

문제

업로드중..


일단 생각하기!

  • 생각보다 오래 걸렸던 문제다. 문제를 이해하는데도 오래걸려 정확히 이해하지 못하고 넘어갔던 것 같아 다시 풀어보았다.
  • 재귀 문제를 풀때 파악해야 할 것은 반복될 부분, 반복이 종료될 조건, 반복되면서 바뀔 부분이다.
  • 이 문제에서 반복될 부분은 "재귀함수가 뭔가요?"~선비가 찾아와서 물었어."이고, 이를 N번 반복한다. 재귀함수가 호출 될때마다 count + 1를 하여 countN과 같으면 종료되도록 한다. 이때 "재귀함수가 뭔가요?"~라고 답변하였지.가 출력되도록 한다.
  • 또한, 재귀함수가 호출 될때마다 밑줄 4개가 추가되도록 한다.

풀이

package BJ;

import java.util.Scanner;

public class BJ_17478_재귀함수가뭔가요_김유나 {
	static StringBuilder sb = new StringBuilder();
	static String underBar = "";
	static int N;
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		N = s.nextInt();
		sb.append("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.\n");
		recursion(0);
		System.out.println(sb);
	}
	static void recursion(int count) {
		String temp = underBar;
		if (count == N) {
			sb.append(temp).append("\"재귀함수가 뭔가요?\"\n");
			sb.append(temp).append("\"재귀함수는 자기 자신을 호출하는 함수라네\"\n");
			sb.append(temp).append("라고 답변하였지.\n");
			return;
		}
		
		sb.append(temp).append("\"재귀함수가 뭔가요?\"\n");
		sb.append(temp).append("\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n");
		sb.append(temp).append("마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.\n");
		sb.append(temp).append("그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"\n");
		
		underBar += "____";
		recursion(count + 1);
		sb.append(temp).append("라고 답변하였지.\n");
	}
}
profile
백엔드 개발자 연습생

0개의 댓글