알고리즘
[프로그래머스][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"]