Algorithm
ํ๋ฌธ ๋ฌธ์์ด ๊ฒ์ฌ(Swift)
CheonD
2022. 10. 5. 17:36
ํ๋ฌธ ๋ฌธ์์ด ๊ฒ์ฌ(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ํ์ ์ด ๋์จ๋ค.