회문 문자열 검사(Swift)
2022. 10. 5. 17:36ㆍAlgorithm
회문 문자열 검사(Swift)
문제 설명
문자열을 Array로 변환한 풀이
func checkRotate(_ arr: [Character]) -> String {
for i in 0..<arr.count/2 {
if arr[i] != arr[arr.count-i-1] {
return "NO"
}
}
return "YES"
}
let n = Int(readLine()!)!
var results: [String] = []
for _ in 0..<n {
let input = Array(readLine()!.lowercased())
results.append(checkRotate(input))
}
for (idx, x) in results.enumerated() {
print("\(idx+1) \(x)")
}
문자열 인덱스 개념을 이용한 풀이
문자열 인덱스를 이용해서 문제를 풀 때 느낀점은 String.Index(utf16Offset:in:)을 사용하면 인자들이 헷갈리고 조금 덜 직관적이라고 느꼈다. (utf16Offset은 기존의 encodedOffset이 deprecate되고 나온 것)
그래서 이제 문제를 풀 때 일관적으로 문자열.index(값, offsetBy:)를 사용해서 인덱스를 구해서 subString해서 풀어나가야겠다.
func checkRotate(_ str: String) -> String {
for i in 0..<str.count/2 {
let firstIndex = str.index(str.startIndex, offsetBy: i)
let lastIndex = str.index(str.endIndex, offsetBy: -(i+1))
if str[firstIndex] != str[lastIndex] {
return "NO"
}
}
return "YES"
}
let n = Int(readLine()!)!
var results: [String] = []
for _ in 0..<n {
let input = readLine()!.lowercased()
results.append(checkRotate(input))
}
for (idx, x) in results.enumerated() {
print("\(idx+1) \(x)")
}
피드백
문자열을 String.Index타입으로 하나의 값만 추출하면 Character가, SubString으로 범위를 정해서 추출하면 SubString타입이 나온다.
'Algorithm' 카테고리의 다른 글
숫자만 추출 (0) | 2022.10.07 |
---|---|
백준 - 회문(Swift) (0) | 2022.10.06 |
완주하지 못한 선수 - 프로그래머스(python3) (0) | 2022.10.03 |
백준 - 주사위게임 2476번 (Swift) (0) | 2022.10.03 |
대표값 (2) | 2022.10.01 |