본문 바로가기

 𝗔𝗣𝗣𝗟𝗘/ALGORITHM

[내일배움캠프] 데일리 루틴(iOS_3회차) - 시저 암호

이미지를 클릭하면 코딩테스트 페이지로 이동합니다

 

내 풀이

func solution(_ s:String, _ n:Int) -> String {
    return s.utf8.map {
        var code = Int($0)
        switch code {
            case 65...90:
                code = (code + n - 65) % 26 + 65
            case 97...122:
                code = (code + n - 97) % 26 + 97
            default:
                break
        }
        return String(UnicodeScalar(code)!)
    }.joined()
}

 

- 문자열 s를 UTF-8로 인코딩하여 문자열을 바이트 배열로 변환

- 변환된 바이트 배열을 순회하며 각 문자의 ASCII 코드 값 확인

- 값이 대문자 알파벳('A'부터 'Z')인 경우와 소문자 알파벳('a'부터 'z')인 경우에 대해 각각 시저 암호를 적용하여 밀어낸 값 구하기

- 대문자의 경우, ASCII 코드 값에서 65를 뺀 후 n을 더하고, 26으로 나눈 나머지를 구함, 이후 다시 65를 더해 원래 대문자로 변환

- 소문자의 경우, ASCII 코드 값에서 97을 뺀 후 n을 더하고, 26으로 나눈 나머지를 구함, 이후 다시 97을 더해 원래의 소문자로 변환

- 변환된 문자들을 다시 문자열로 결합하여 암호화된 문자열 생성

 

 

 

 

알고리즘................

출처: Pinterest

Recent Posts
Visits
Today
Yesterday
Archives
Calendar
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31