문제번호: 17478
문제명: 재귀함수가 뭔가요?
문제링크: https://www.acmicpc.net/problem/1543
문제내용과 예제 입/출력은 위 문제 링크에서 확인해 주시기 바랍니다.
오늘은 재귀함수에서 제일 기초가 되는 문제를 풀어보았습니다. 문제 자체도 은근히 병맛스러운 부분도 있어서 오랜만에 즐겁게 문제를 풀 수 있었습니다. 이번 문제를 풀면서 "를 출력하는법을 알아냈습니다. 평소 쓸일이 없다보니까 이렇게 문제를 풀면서 알게 되었네요. 또한 new string('_', depth * 4); 이런식으로 반복되는 문자열을 특정 길이로 생성할 수 있다는 사실도 배우게 되었습니다. 이렇게 간단한 문법도 모르고있었다는게 부끄럽게 느껴졌고 반성할 수 있었던 시간이었습니다.
다음은 정답코드입니다.
public static void Main()
{
Console.OutputEncoding = Encoding.UTF8;
using var sr = new StreamReader(Console.OpenStandardInput());
using var sw = new StreamWriter(Console.OpenStandardOutput());
int n = int.Parse(sr.ReadLine());
sw.WriteLine("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.");
AnswerBot(0);
void AnswerBot(int depth)
{
string indent = new string('_', depth * 4);
if (n == depth)
{
sw.Write(indent);
sw.Write("\"재귀함수가 뭔가요?\"");
sw.WriteLine();
sw.Write(indent);
sw.Write("\"재귀함수는 자기 자신을 호출하는 함수라네\"");
sw.WriteLine();
sw.Write(indent);
sw.Write("라고 답변하였지.");
sw.WriteLine();
return; // 종료
}
sw.Write(indent);
sw.Write("\"재귀함수가 뭔가요?\"");
sw.WriteLine();
sw.Write(indent);
sw.Write("\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.");
sw.WriteLine();
sw.Write(indent);
sw.Write("마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.");
sw.WriteLine();
sw.Write(indent);
sw.Write("그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"");
sw.WriteLine();
AnswerBot(depth + 1);
sw.Write(indent);
sw.Write("라고 답변하였지.");
sw.WriteLine();
}
sr.Close();
sw.Close();
}'알고리즘 풀이' 카테고리의 다른 글
| [C#] 백준 11728번 문제풀이 (0) | 2026.02.01 |
|---|---|
| [C#] 백준 13909번 문제풀이 (0) | 2026.01.31 |
| [C#] 백준 1543번 문제풀이 (0) | 2026.01.29 |
| [C#] 백준 2018번 문제풀이 (0) | 2026.01.28 |
| [C#] 백준 10867번 문제풀이 (0) | 2026.01.27 |