[Kotlin/프로그래머스] 코딩테스트 연습 > 연습문제 > 둘만의 암호

👀 문제

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

👊 도전

1. 설계

  1. 아스키코드를 이용해 구현

2. 구현

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution {
fun solution(s: String, skip: String, index: Int): String {
var answer: String = ""
val set = skip.toHashSet()
s.forEach { char ->
var count = 0
var nextChar = char
repeat(index) {
count++
nextChar = (nextChar.code + 1).toChar()
if (nextChar.code > 'z'.code) {
nextChar = (nextChar.code - 'z'.code + 'a'.code - 1).toChar()
}
while (set.contains(nextChar)) {
nextChar = (nextChar.code + 1).toChar()
if (nextChar.code > 'z'.code) {
nextChar = (nextChar.code - 'z'.code + 'a'.code - 1).toChar()
}
}

        }
        answer += nextChar
    }
    return answer
}
}

3. 결과

실행결과 🤟 성공 🤟

4. 설명

  1. 아스키코드를 이용해 알파벳을 구한다
    • 아스키코드는 Char.code로 불러올 수 있고, 다음 인덱스 체크를 위해 +1한다.
    • 마지막 알파벳인 ‘z’를 넘어갈 경우 ‘a’로 돌려주는 코드가 필요하다.
    • 제외할 값은 HashSet으로 변환하여 체크한다.

👏 해결 완료!