💡 문제
💬 입출력 예시
📌 풀이(소스코드)
class Solution {
public String solution(String s, String skip, int index) {
StringBuilder answer = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
for (int j = 0; j < index; j++) {
if (++ch > 'z') {
ch = 'a';
}
while (skip.indexOf(ch) >= 0) {
if (++ch > 'z') {
ch = 'a';
}
}
}
answer.append(ch);
}
return answer.toString();
}
}
📄 해설
접근
- 간단한 문자열 처리 구현 문제이다.
- 문제에서 주어진 조건들을 충실히 이행하자.
- 문자열
s
의 각 알파벳을 index
만큼 뒤의 알파벳으로 바꾼다.
index
만큼의 뒤의 알파벳이 z
를 넘어갈 경우 다시 a
로 돌아간다.
skip
에 있는 알파벳은 제외하고 건너뛴다.
- 문자열의 각 문자를 추출해내는 것은
String.chartAt()
메소드, skip
에 있는 알파벳인지를 판별하는 것은 String.indexOf()
메소드를 사용해서 판별할 수 있다.
과정
- 문자열
s
를 순회하며 각 알파벳을 String.charAt()
메소드로 추출하고, 아래 과정을 index
만큼 반복해서 수행한다.
- 추출한 문자
ch
의 값을 1 증가시킨다. 이때, ch
가 z 를 넘어가는지 확인하고, 넘어간다면 a 로 변경해준다.
ch
가 skip
에 포함되는 알파벳인지를 확인한다. 이때, String.indexOf()
메소드를 사용한다.
- 해당 메소드는 문자열 내에서 매개변수로 받은 문자의 인덱스 번호를 반환하는데, 찾지 못하면 -1 을 반환한다.
- 따라서, 해당 메소드의 반환 값이 0 이상일 경우에만
과정 1
을 수행한다.