반응형
```
백준 25501번 재귀의 귀재 Kotlin 구현해보기
```
이번 글을 통해 배워갈 내용
- 백준 25501번 재귀의 귀재 풀이
https://www.acmicpc.net/problem/25501
25501번: 재귀의 귀재
각 테스트케이스마다, isPalindrome 함수의 반환값과 recursion 함수의 호출 횟수를 한 줄에 공백으로 구분하여 출력한다.
www.acmicpc.net
백준 25501번 재귀의 귀재는
난이도 브론즈 등급의 문제로서
아래와 같은 코드 블록이 주어지면
테스트 케이스만큼 recursion함수가 몇 번 호출되는지
isPalindrome이 true인지 false인지 출력해주면 됩니다.
object Main {
fun recursion(s: String, l: Int, r: Int): Int {
return if (l >= r) 1 else if (s[l] != s[r]) 0 else recursion(s, l + 1, r - 1)
}
fun isPalindrome(s: String): Int {
return recursion(s, 0, s.length - 1)
}
@JvmStatic
fun main(args: Array<String>) {
println("ABBA: " + isPalindrome("ABBA"))
println("ABC: " + isPalindrome("ABC"))
}
}
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
입력을 받고
static 변수 하나를 추가해서 함수호출시마다 변화를 줘서 출력해도 되지만
뭔가 while문안에 static 변수 없이 쓰고 싶어서 아래와 같이 풀었습니다.
fun main(args: Array<String>) {
// 입력
val testCase = readln().toInt()
val tcList = ArrayList<String>()
for (i in 1..testCase) {
tcList.add(readln())
}
// 출력
val sb = StringBuilder()
tcList.forEach { str -> sb.append(findPalindromeInfo(str)).append("\n") }
if (sb.isNotEmpty()) {
sb.setLength(sb.length - 1)
}
print(sb.toString())
}
// isPalindrome 과 recursion 함수의 호출 횟수
fun findPalindromeInfo(str: String): String {
var start = 0
var end = str.length - 1
var isPalindrome = 1
var rCount = 0
while (start <= end) {
rCount++
if (str[start] != str[end]) {
isPalindrome = 0
break
}
start++
end--
}
// 구조적 차이에 의한 보정
if (isPalindrome == 1 && str.length % 2 == 0) {
rCount++
}
return "$isPalindrome $rCount"
}
// https://codemasterkimc.tistory.com/
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
728x90
반응형
'Kotlin > Kotlin 알고리즘' 카테고리의 다른 글
백준 26041번 비슷한 전화번호 표시 Kotlin 구현해보기 (0) | 2022.11.19 |
---|---|
백준 26026번 Coffee Cup Combo Kotlin 구현해보기 (0) | 2022.11.19 |
백준 2587번 평균값, 중앙값 찾기 Kotlin 구현해보기 (0) | 2022.10.28 |
백준 2644번 촌수계산 Kotlin 구현해보기 (0) | 2022.10.24 |
백준 3733번 Shares Kotlin 구현해보기 (0) | 2022.10.19 |