import Foundation
func solution(_ s:String) -> String {
if s.count <= 2 {
return s
} else {
return solution(String(s[s.index(after: s.startIndex)..<s.index(before: s.endIndex)]))
}
}
문자열의 가운데 문자열을 반환하는 문제이다. 따라서 한글자 혹은 두글자의 문자열이 반환된다.
문자열의 처음 문자와 끝 문자를 제외하고 다시 solution 함수에 매개변수로 넘기며 다시 호출하는 재귀를 사용하였다.
따라서 처음과 끝을 제외하면서 계속해서 재귀호출을 하다, 문자열의 길이가 2이하가 되면 해당 문자열을 반환한다.
재귀의 경우 메모리를 많이 잡아먹기 때문에 재귀를 지양하는 것이 좋을 것 같다. 따라서 해당 알고리즘을 다음과 같이 해결할수도 있을 것 같다.
func solution(_ s:String) -> String {
if s.count % 2 == 0 {
return String(Array(s)[s.count / 2 - 1 ..< s.count / 2 + 1])
} else {
return String(Array(s)[s.count / 2])
}
}
여기서 알게된 점은 String을 Array형태로 변경하면 index에 Int형을 넣어도 접근이 가능하다는 점이었다. 매우 유용하게 쓰일 듯 하다.