반응형
백준 17478번 문제입니다. (solved.ac)기준 실버 5 문제입니다.
https://www.acmicpc.net/problem/17478
문제
문제 접근
재귀호출할 횟수를 입력받고 그 횟수만큼 "재귀함수가 뭔가요 ~~찾아와서 물었어." 까지와 "라고 답변하였지."를 반복해서 ____(언더바 4개) 와 출력하는 문제입니다. "라고 답변하였지." 부분은 위의 부분과는 예시 출력 맨 아래에 출력되어있는 것을 볼 수 있는데 이것을 통하여 재귀 호출 이후에 실행되는 부분임을 알 수 있습니다.
whatIsTheRecursion이라는 함수는 첫 번째 인자로는 재귀호출할 횟수(cnt)를, 두 번째 인자로는 현재 몇 번째 호출(times)인지를 받습니다.
재귀가될 때마다 cnt는 -1, times는 +1되며 호출됩니다.
printUnder함수는 인자로 받은 수만큼 반복하여 ____를 출력해줍니다.
cnt가 0이면 한번만 출력되는 부분이 출력되고 함수가 return됩니다.
재귀 호출은 stack형식으로 쌓여가며 진행된다고 생각하면 좋습니다.
정답 코드
fun main(){
val cnt = readln().toInt()
println("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.")
whatIsTheRecursion(cnt,0)
}
fun whatIsTheRecursion(cnt : Int, times : Int){
if (cnt == 0){
printUnder(times)
println("\"재귀함수가 뭔가요?\"");
printUnder(times)
println("\"재귀함수는 자기 자신을 호출하는 함수라네\"");
printUnder(times)
println("라고 답변하였지.");
return
}
printUnder(times)
println("\"재귀함수가 뭔가요?\"");
printUnder(times)
println("\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.");
printUnder(times)
println("마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.");
printUnder(times)
println("그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"");
whatIsTheRecursion(cnt-1, times+1)
printUnder(times)
println("라고 답변하였지.");
}
fun printUnder(cnt : Int){
for (cnt in 0 until cnt){
print("____")
}
}
반응형
'알고리즘 문제풀이[Algorithm]' 카테고리의 다른 글
[백준] 17390번 이건 꼭 풀어야 해!(누적합 - prefix sum)[Kotlin - 코틀린] (0) | 2022.05.23 |
---|---|
[백준] 11399번 ATM(정렬 - 선택 정렬)[Kotlin - 코틀린] (0) | 2022.05.21 |
[백준] 1182 부분수열의 합(브루트 포스 / 완전 탐색)[Kotlin - 코틀린] (0) | 2022.05.18 |
[백준] 18111번 마인크래프트(브루트 포스 / 완전 탐색)[Kotlin - 코틀린] (0) | 2022.05.16 |
[백준] 10819 차이를 최대로(브루트 포스)[Kotlin - 코틀린] (0) | 2022.05.16 |
최근댓글