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ํƒ€์ž…์ด ๋‚˜์˜จ๋‹ค.