문제를 보고서 skip문자열을 따로 처리하려고해서 시간이 오래걸렸다.
val charMap = ('a'..'z')
.filter { it !in skip }
.associateWith { char ->
val newIndex = (char - 'a' + index) % 26
('a'.toInt() + if (newIndex < 0) newIndex + 26 else newIndex).toChar()
}
이렇게 코드를 작성했었는데 생각해보니 a = h로 나타나지질 않았다.
그 원인이 생각해보니.. 이미 skip문자열에서 걸러진 알파벳 길이 26까지를 포함해서
나누다보니 계속해서 원하지 않는 결과가 나왔던것이다.
그래서 아예 처음부터 skip안에있는 문자열을 제거 후 새로운 변수 newAlphabet 에 담아 주었다.
val newAlphabet = ('a'..'z')
.filter { it !in skip }
그 후 현재 인덱스를 찾아낸후 주어진 index를 더해서 새로운 인덱스 변수에 담아줬다.
val result = StringBuilder()
for(char in s){
if(char in newAlphabet){
val currendIdx = newAlphabet.indexOf(char)
val newIdx = (currendIdx + index) % newAlphabet.size
result.append(newAlphabet[newIdx])
}else{
result.append(char)
}
}
다행히도 결과는 정상적으로 나왔다.
'TIL > kotlin 알고리즘' 카테고리의 다른 글
kotlin 프로그래머스 lv1 성격 유형 검사하기 (0) | 2024.02.20 |
---|---|
kotlin 프로그래머스 lv1 햄버거 만들기 (0) | 2024.02.19 |
kotlin 프로그래머스 lv1 체육복 (0) | 2024.02.15 |
kotlin 프로그래머스 lv1 숫자 짝꿍 (0) | 2024.02.14 |
kotlin 프로그래머스 lv1 로또의 최고 순위와 최저 순위 (1) | 2024.02.13 |