iOS/Algorithm
[Swift] StrSymmetryPoint 문제 풀이 [Codility - Exercise 4. Algorithmic Skills]
보라봉_
2023. 3. 30. 20:29
728x90
💬 문제
https://app.codility.com/programmers/trainings/4/str_symmetry_point/
StrSymmetryPoint coding task - Practice Coding - Codility
Find a symmetry point of a string, if any.
app.codility.com
💬 Idea
- 해당 문자의 왼쪽에 있는 문자열 부분이 오른쪽에 있는 문자열 부분과 반전이 되도록 하는 인덱스가 있다면 해당 인덱스를 도출하는 문제였다.
- 따라서 문자열의 길이가 짝수이면 위 조건에 해당하지 않기 때문에 바로 -1을 리턴한다.
- 문자열의 길이가 홀수일 때에는 중간 인덱스를 기점으로 왼쪽 오른쪽의 끝 문자들부터 비교해보면 된다.
- 즉 “racecar”와 같은 문자열이 있을 때 중간을 기점으로 양 끝의 문자들을 차례로 비교한다.
- 비교하며 같지 않은 인덱스가 있다면 바로 -1을 리턴하며 빠져나오고, 반복문을 다 돌때까지 같다면 mid(중간 인덱스)를 리턴한다.
💬 풀이
public func solution(_ S : inout String) -> Int {
if S.count % 2 == 0 { return -1 }
let mid = S.count / 2
var start = 0
var end = S.count - 1
let s = Array(S).map({ String($0) })
while start < mid {
if s[start] != s[end] {
return -1
}
start += 1
end -= 1
}
return mid
}
시간복잡도: O(length(S))
효율성 0점 풀이 : https://app.codility.com/demo/results/trainingDY7DPQ-PFH/
100점 풀이 : https://app.codility.com/demo/results/trainingZNRGGS-24G/
<깃헙>
GitHub - hwangJi-dev/swiftAlgorithm: Algorithm Practice with Swift
Algorithm Practice with Swift. Contribute to hwangJi-dev/swiftAlgorithm development by creating an account on GitHub.
github.com
반응형