class Solution {
public String solution(String s, String skip, int index) {
String answer = "";
char[] chars = s.toCharArray();
char[] skipChar = skip.toCharArray();
for (char c : chars) {
for (int i = 0; i < index; i++) {
c = (char) (c + 1);
while (c > 122) {
c = (char) (c - 26);
}
for (char skC : skipChar) {
if (c == skC) {
i--;
}
}
}
answer += c;
}
return answer;
}
}
먼저 char 배열에 문자열들을 담아준다.
그 뒤, 문자에 index 만큼 1씩 더하면서 'z'에 해당하는 122가 넘어가는지 체크하며, 넘어가면 -26으로 다시 한바퀴 돌려준다.
그리고 안착한 그 값이 skip에 들어있는 문자가 아닌지 확인하며, 들어있다면 한번 더 돌려주기 위해 i-- 한다.
나온 값을 c에 더하면 문자열로 완성!
public String solustion(String s, String skip, int index) {
String answer = "";
char[] chars = s.toCharArray();
for (char c : chars) {
for (int i = 0; i < index; i++) {
c += 1;
if (c > 'z') c -= 26;
if (skip.contains(String.valueOf(c))) i--;
}
answer += c;
}
return answer;
}
다른 사람의 풀이를 보니 122대신 'z'를 사용하는게 직관적이었다. 게다가 (char)를 안붙여도 되니 깔끔해지더라.
그리고 skip에 있는 문자인지 확인을 contains로 했는데, 아주 좋은 방법인 것 같아 따라해보았다.