시저 암호

jericho·2023년 12월 27일

PS(문제풀이)

목록 보기
12/12

https://school.programmers.co.kr/learn/courses/30/lessons/12926

문자열의 문자를 n만큼 밀면 된다.

fun solution(s: String, n: Int): String =
    String(CharArray(s.length) {
        when (val c = s[it]) {
            ' ' -> ' '
            in 'a'..'z' -> with(c + n) { if (this > 'z') this - 26 else this }
            else -> with(c + n) { if (this > 'Z') this - 26 else this }
        }
    })

띄어쓰기는 그대로, 소문자, 대문자는 n만큼 더해 소문자, 대문자 범위로 유지해준다.
이를 String으로 반환해야 하는데, CharArray로 만들고 String을 씌워 반환한다. 반환할 길이는 기존 문자열 길이와 같으므로 이 길이로 CharArray를 생성하고, 초기화는 해당 인덱스의 문자를 가져와서 암호화 방식대로 초기화 해주었다.

0개의 댓글