본문 바로가기
알고리즘/알고리즘 설명

20230714 [Java] 문제풀이

by JayAlex07 2023. 7. 14.

20230714 [Java] 문제풀이

 

[백준 17478 Silver - 5] 재귀함수가 뭔가요?

 

재귀는 함수가, 자기 자신을 호출하는 것이다 (아는데 아직도 어려움...)

 

일단 count를 1씩 더하면서 num과 같아지면 return을 해준다 (break point)

 

그 이후에는 System.out.printf("%s라고 답변하였지.", under).println(); 이 파트가 실행이 되는 것이다

 

어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.
"재귀함수가 뭔가요?"
"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."
____"재귀함수가 뭔가요?"
____"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
____마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
____그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."
________"재귀함수가 뭔가요?"     <-- 여기서부터는 count와 num이 같아진 것
________"재귀함수는 자기 자신을 호출하는 함수라네"
________라고 답변하였지. 
____라고 답변하였지.    <-- return 후 System.out.printf("%s라고 답변하였지.", under).println(); 부분
라고 답변하였지.

import java.util.*;
public class baekjoon17478 {

    public static void ask(int count, int num, String under) {

        System.out.printf("%s\"재귀함수가 뭔가요?\"", under).println();

        if (count == num) {
            System.out.printf("%s\"재귀함수는 자기 자신을 호출하는 함수라네\"", under).println();
            System.out.printf("%s라고 답변하였지.", under).println();
            return;
        }

        System.out.printf("%s\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.", under).println();
        System.out.printf("%s마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.", under).println();
        System.out.printf("%s그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"", under).println();
        ask(count + 1, num, under + "____");

        System.out.printf("%s라고 답변하였지.", under).println();
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();

        System.out.println("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.");
        ask(0, num, "");
    }
}

'알고리즘 > 알고리즘 설명' 카테고리의 다른 글

20230719 [Java] 문제풀이  (0) 2023.07.19
20230718 [Java] 문제풀이  (0) 2023.07.18
20230711 [Java] 문제풀이  (0) 2023.07.11
20230709 [Java] 문제풀이  (0) 2023.07.09
20230708 [Java] 문제풀이  (0) 2023.07.08