MUKER_DEV with iOS

[Swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์‹œ์ €์•”ํ˜ธ ๋ณธ๋ฌธ

๐Ÿค– ์•Œ๊ณ ๋ฆฌ์ฆ˜/programmers

[Swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์‹œ์ €์•”ํ˜ธ

MUKER 2023. 1. 4. 15:13
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


๋ฌธ์ œํ’€์ด๋ฅผ ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํ’€์ด์™€
๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ํ’€์ด๋กœ ๋‚˜๋ˆ„์–ด ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
- ๋ฌธ์ œ์— ๋”ฐ๋ผ ํ•˜๋‚˜์˜ ํ’€์ด๋งŒ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํ’€์ด

func solution(_ s:String, _ n:Int) -> String {
let upper = Array("abcdefghijklmnopqrstuvwxyz".uppercased())
let lower = Array("abcdefghijklmnopqrstuvwxyz")
var result = ""

for i in s {
    if i == " " { result.append(" ")}
    else {
        if upper.contains(i) {
            result.append(String(upper[(upper.firstIndex(of: i)! + n) % 26]))
        } else {
            result.append(String(lower[(lower.firstIndex(of: i)! + n) % 26]))
        }
    }
}
    return result
}
  •  

 

๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ํ’€์ด

func solution(_ s:String, _ n:Int) -> String {
    return s.utf8.map { i in
        var num = Int(i)
        switch i {
        case 65...90:
            num = (num + n - 65) % 26 + 65
        case 97...122:
            num = (num + n - 97) % 26 + 97
        default:
            break
        }
        return String(UnicodeScalar(num)!)
    }.joined()
}
  • ๋ฌธ์ž์—ด์„ utf8 ํ˜•์‹์œผ๋กœ ๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ๋Œ๋ฆฌ๋ฉด i ๊ฐ’๋“ค์€ String.UTF8View.Element ๋ผ๋Š” ํƒ€์ž…์„ ๊ฐ€์ง€๊ณ  ๋‚˜์˜จ๋‹ค.
  • utf8์˜ ํ‘œํ˜„์€ ์•„์Šคํ‚ค์ฝ”๋“œ์™€ ๊ฐ™๋‹ค.
  • ๋”ฐ๋ผ์„œ Int๋กœ ์ดˆ๊ธฐํ™” ํ•ด์ค€ ๋’ค ์•ŒํŒŒ๋ฒณ์˜ ์•„์Šคํ‚ค์ฝ”๋“œ ๋ฒ”์œ„๋ฅผ ๋น„๊ตํ•ด ๋Œ€๋ฌธ์ž์ธ์ง€ ์†Œ๋ฌธ์ž์ธ์ง€ switch๋ฌธ์„ ํ†ตํ•ด ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.
  • UnicodeScalar(num)!๋Š” Intํ˜•์‹์˜ ์•„์Šคํ‚ค์ฝ”๋“œ๋ฅผ ๋„ฃ์œผ๋ฉด ํ•ด๋‹น ๋ฌธ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค.

 

๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ํ’€์ด

func solution(_ s:String, _ n:Int) -> String {
    let alphabets = "abcdefghijklmnopqrstuvwxyz".map { $0 }
    return String(s.map {
        guard let index = alphabets.firstIndex(of: Character($0.lowercased())) else { return $0 }
        let letter = alphabets[(index + n) % alphabets.count]
        return $0.isUppercase ? Character(letter.uppercased()) : letter
    })
}
  •