TIL #9

loci·2024년 5월 8일
0

TIL

목록 보기
8/111

대문자인지 구분해서 char에 거리만큼 더해서 알파벳을 밀어 주었다.
Z를 넘어갈경우와 공백일경우 따로 처리해줌


class Solution {
    fun solution(s: String, n: Int): String {
        var answer = ""
        s.forEach{
            var ch = it
            if(it == ' '){
                answer += ' '
            } else if(ch.isUpperCase()){
                var charInt = (ch + n).toInt() 
                if(charInt > 90){
                    charInt -= 26
                }
                answer += charInt.toChar()
            } else {
                var charInt = (ch + n).toInt() 
                if(charInt > 122){
                    charInt -= 26
                }
                answer += charInt.toChar()
            }
        }
        return answer
    }
}

다른사람풀이

class Solution {
    fun solution(s: String, n: Int): String =
        s.toList().joinToString(separator = "") {
            when (it) {
                in 'A'..'Z' -> ('A'.toInt() + (it.toInt() - 'A'.toInt() + n) % ('Z' - 'A' + 1)).toChar()
                in 'a'..'z' -> ('a'.toInt() + (it.toInt() - 'a'.toInt() + n) % ('z' - 'a' + 1)).toChar()
                else -> it
            }.toString()
        }
}
class Solution {
    fun solution(s: String, n: Int): String =
        s.map {
            when {
                it.isLowerCase() -> 'a' + (it + n - 'a') % 26
                it.isUpperCase() -> 'A' + (it + n - 'A') % 26
                else -> ' '
            }
        }.joinToString("")
}
profile
편리한 개발자

0개의 댓글