728x90
문제
정해진 출력 양식에 맞게 주어진 반복 횟수만큼 반복해서 출력하라
접근 방식
어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.
"재귀함수가 뭔가요?"
"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."
____"재귀함수가 뭔가요?"
____"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
____마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
____그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."
________"재귀함수가 뭔가요?"
________"재귀함수는 자기 자신을 호출하는 함수라네"
________라고 답변하였지.
____라고 답변하였지.
라고 답변하였지.
위와 같이 반복 횟수마다 "____"를 매 줄마다 앞에 추가하여
반복 횟수, 즉 재귀의 깊이를 구분하여 출력해야 한다.
"어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다."
우선 이 문장은 첫 재귀 호출 시에만 출력돼야 하기 때문에
재귀를 호출할 때 한 번만 같이 호출해 준다
"재귀함수가 뭔가요?"
다음으로 이 문장은 재귀 호출 시마다 무조건 출력돼야 하기 때문에
BaseCase 전에 위치하게 한다.
"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."
다음으로 이 부분은 마지막 재귀 호출이 아닐 시에는
항상 출력되어야 하는 부분이기 때문에
BaseCase 이후에 위치하게 한다.
"재귀함수는 자기 자신을 호출하는 함수라네"
이 부분은 마지막 재귀 호출 시에 호출돼야 하기 때문에
BaseCase에서 출력하게 한다.
"라고 답변하였지."
마지막으로 이 부분은 모든 재귀 호출 스택이 종료될 때마다 호출 되게
BaseCase와 메서드의 마지막 부분에서 출력되게 한다.
풀이
public class Main {
private static int n = 0;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
System.out.println("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.");
func(0);
}
private static void func(int k) {
print(k, "\"재귀함수가 뭔가요?\"");
if (k == n) {
print(k, "\"재귀함수는 자기 자신을 호출하는 함수라네\"");
print(k, "라고 답변하였지.");
return;
}
print(k, "\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.");
print(k, "마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.");
print(k, "그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"");
func(k + 1);
print(k, "라고 답변하였지.");
}
private static void print(int k, String x) {
for (int i = 0; i < k; i++) {
System.out.print("____");
}
System.out.println(x);
}
}
'Java > Algorithms' 카테고리의 다른 글
[백준] 2630번 : 색종이 만들기 (0) | 2023.10.25 |
---|---|
[백준] 1780번 : 종이의 개수 (0) | 2023.10.25 |
[프로그래머스] 모의고사 (1) | 2023.10.24 |
[프로그래머스] 최소직사각형 (1) | 2023.10.24 |
[백준] 11729번 : 하노이 탑 이동 순서 (1) | 2023.10.14 |