Where who wants to meet someone
백준 Swift [25501] 재귀의 귀재 본문
728x90
난이도
브론즈 II
문제
https://www.acmicpc.net/problem/25501
내 답안
var palindromeCount = 0
func testPalindrome(of text: [String], from left: Int, to right: Int) -> Int {
palindromeCount += 1
if left >= right {
return 1
} else if text[left] != text[right] {
return 0
} else {
return testPalindrome(of: text, from: left + 1, to: right - 1)
}
}
for _ in 1...Int(readLine()!)! {
let input = readLine()!.map { String($0) }
palindromeCount = 0
print(testPalindrome(of: input, from: 0, to: input.count - 1), palindromeCount)
}
- 팰린드롬 식은 문제에 제시된 것을 사용.
양 끝단의 인덱스를 가지고 판별하는데, 각각 끝에서부터 시작해서 그 위치의 글자가 같으면 다음 인덱스로 넘어가고 글자가 다르면 0을 반환하는 식으로 진행하다 left 인덱스가 right보다 크거나 같아지면 전부 확인한 것이므로 1을 반환(글자가 다른게 없다는 것) - Swift에서는 String의 인덱스로 접근이 안되기 때문에 map을 통해 배열로 바꿔주고 메서드를 호출했다.
palindromeCount 변수를 따로 만들어 메서드가 호출될 때마다 해당 값을 +1 해주는 식으로 해결
'백준 알고리즘 문제 기록 > 재귀' 카테고리의 다른 글
백준 Swift [10870] 피보나치 수 5 (0) | 2023.09.12 |
---|---|
백준 Swift [27433] 팩토리얼 2 (0) | 2023.09.12 |