https://school.programmers.co.kr/learn/courses/30/lessons/155652
class Solution {
fun solution(s: String, skip: String, index: Int): String {
var answer: String = ""
val alphabet = mutableListOf('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z')
alphabet.removeAll { skip.contains(it) }
answer = s.map {
alphabet[(alphabet.indexOf(it) + index) % alphabet.size]
}.joinToString("")
return answer
}
}
나는 이런식으로 알파벳을 모두 리스트에 넣고 removeAll을 통해서 삭제시킨 다음 시작했다.
근데 더 깔끔한 방법이 있었다.
class Solution {
fun solution(s: String, skip: String, index: Int): String {
val alphabet = ('a'..'z').filter{ it !in skip }
return s.map { alphabet[(alphabet.indexOf(it) + index) % alphabet.size] }.joinToString("")
}
}
저런식으로도 되는구나...
맵 안에를 설명하자면 간단하다.
s 안을 순회하며 it이 알파벳의 몇번째 인덱스에 속하는지 값과 건너뛰어야 하는 index값을 더하고 알파벳 배열인덱스를 초과할 수 있기 때문에 배열 사이즈로 나머지 연산을 해준다. 이후 리턴 타입이 스트링이므로 joinToString()을 통해 타입을 맞춰준다.
'Code KATA' 카테고리의 다른 글
Programmers 성격 유형 검사하기(2022KaKaoTech) with Kotlin (1) | 2023.12.21 |
---|---|
Programmers 햄버거 만들기 with Kotlin (0) | 2023.12.20 |
Programmers 대충 만든 자판 with Kotlin (0) | 2023.12.18 |
Programmers 문자열 나누기 with Kotlin (0) | 2023.12.15 |
Programmers 체육복 with Kotlin (0) | 2023.12.14 |