대문자인지 구분해서 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("")
}