알고리즘

[프로그래머스][Swift] 시저 암호

moving 2022. 6. 28. 13:21
728x90

func solution(_ s:String, _ n:Int) -> String {
    
    var arr: [String] = Array<String>()
    var result: String = String()
    
    for (_, str) in s.enumerated() {
        arr.append(String(str))
    }
    
    for i in 0..<arr.count {
        if arr[i] != " " {
            var value = UnicodeScalar(arr[i])!.value
            if value >= 65 && value <= 90 {
                value = (value + UInt32(n) - 65) % 26 + 65
            } else {
                value = (value + UInt32(n) - 97) % 26 + 97
            }
            result += String(UnicodeScalar(value)!)
        } else {
            result += arr[i]
        }
    }
    return result
}

print(solution("ABZ", 1)) 
print(solution("a B z", 4))

 

피드백

아스키코드를 이용할 것이고, 알파벳이 26개니까 26으로 나눠서 나머지를 이용하겠다고 풀이 방식은 생각했지만 코드로 구현하는 게 쉽지 않았음

 

문자열을 나눌 때 map 을 이용하는 방식을 생각할 수 있도록 연습하기

let str: String = "BSJEOF"
print(str.map { $0 }) // ["B", "S", "J", "E", "O", "F"]