자바 백준 17478번
실버 5
https://www.acmicpc.net/problem/17478
문제 보기
분류: 구현, 재귀
문제 풀기
base case 및 recursive case 조건을 인지하여 구현한다.
base case 는 재귀함수가 끝나는 지점이며, return 을 하여 이전에 지속적으로 누적된 함수들을 되짚어 돌아간다.
재귀함수와 관련없는 첫 줄
어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다. |
를 시작으로..
recursive case 가 되는,
"재귀함수가 뭔가요?" "잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어. 마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지. 그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어." |
와
라고 답변하였지. |
문장이 들어오고 그 사이에 자신의 함수 myRecursion(n - 1, count + 1); 가 불려진다.
base case 가 되는 문장은
"재귀함수가 뭔가요?" "재귀함수는 자기 자신을 호출하는 함수라네" 라고 답변하였지. |
이고 마지막 출력과 함께 return 되어 지금까지 지나온 함수들로 되돌아간다.
그리고 네 개의 under bar "____" 를 재귀함수 시작할때마다 앞에 추가적으로 출력이 이루어져야 하기 때문에 count 변수와 System.out.print("____".repeat(count)); 를 통해 적용해준다.
코드 보기
// 재귀함수가 뭔가요?
// package boj_17478;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int count = 0;
System.out.println("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.");
myRecursion(n, count);
sc.close();
}
public static void myRecursion(int n, int count) {
if (n == 0) {
System.out.print("____".repeat(count));
System.out.println("\"재귀함수가 뭔가요?\"");
System.out.print("____".repeat(count));
System.out.println("\"재귀함수는 자기 자신을 호출하는 함수라네\"");
System.out.print("____".repeat(count));
System.out.println("라고 답변하였지.");
return;
}
System.out.print("____".repeat(count));
System.out.println("\"재귀함수가 뭔가요?\"");
System.out.print("____".repeat(count));
System.out.println("\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.");
System.out.print("____".repeat(count));
System.out.println("마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.");
System.out.print("____".repeat(count));
System.out.println("그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"");
myRecursion(n - 1, count + 1);
System.out.print("____".repeat(count));
System.out.println("라고 답변하였지.");
}
}
'공부하기 > 백준' 카테고리의 다른 글
[Python] 백준 풀기 2628 - 종이자르기 (0) | 2023.01.18 |
---|---|
[Java] 백준 풀기 1158 - 요세푸스 문제 (0) | 2023.01.17 |
[Java] 백준 풀기 2742 - 기찍 N (0) | 2023.01.15 |
[Python] 백준 풀기 5622 - 다이얼 (0) | 2023.01.14 |
[Java] 백준 풀기 2744 - 대소문자 바꾸기 (0) | 2023.01.13 |