728x90
반응형
<문제 링크>
https://www.acmicpc.net/problem/17478
17478번: 재귀함수가 뭔가요?
평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대
www.acmicpc.net
<풀이>
재귀함수가 어떻게 작동되는지만 알면 쉽게 풀 수 있는 문제이다.
나는 재귀 함수 + format 형식에 맞게 출력하기 위해 printTab()이라는 메소드를 만들어 "____"를 재귀 호출 횟수만큼 출력되게 만들었다.
재귀함수가 종료시 "재귀함수는 자기 자신을 호출하는 함수라네"를 출력해야 하며, 주의할 점은 "을 출력하기 위해서 \"(역슬래쉬)를 해줘야한다는 점이다.
또한, "라고 답변하였지"가 출력되기 전에 재귀함수로 인해 윗 문장이 반복되므로 "라고 답변하였지"를 출력하기 전에 f()를 다시 호출해줘야 한다.
그리고 웬만하면 텍스트는 직접 입력하는 것보다 복사 붙여넣기하자
왜냐하면 내가 직접 입력했다가 괜히 실패해서 나의 평균 정답률이 낮아졌다...
이런 실수를 하지 않고 정확하게 코딩하는 습관을 가지자
<코드>
f(int N, int count): N은 반복 횟수, count는 재귀 호출 횟수
import java.util.Scanner;
public class B17478 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
System.out.println("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.");
f(N, 0);
System.out.print("라고 답변하였지.");
sc.close();
}
// 재귀함수
static void f(int N, int count){
printTab(count);
System.out.println("\"재귀함수가 뭔가요?\"");
if(N == 0){ // 재귀함수 종료
printTab(count);
System.out.println("\"재귀함수는 자기 자신을 호출하는 함수라네\"");
return;
}
printTab(count);
System.out.println("\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.");
printTab(count);
System.out.println("마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.");
printTab(count);
System.out.println("그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"");
f(N-1, ++count);
printTab(count);
System.out.println("라고 답변하였지.");
}
// format 형식 맞추기
static void printTab(int count){
for(int i = 0; i < count; i++){
System.out.print("____");
}
}
}
728x90
반응형
'~2023' 카테고리의 다른 글
[Python] 백준 12865번 문제, 평범한 배낭 (0) | 2021.07.04 |
---|---|
[Python] 백준 2178번 문제, 미로 탐색 (0) | 2021.07.04 |
[JAVA/PYTHON] 백준 1158번 문제, 요세푸스 문제 (0) | 2021.06.26 |
[JAVA] 백준 2822번 문제, 점수 계산 (0) | 2021.06.25 |
[JAVA/PYTHON3] 백준 7568번 문제 - 덩치 비교하기 (0) | 2021.06.25 |