💻 문제 출처 : 프로그래머스_둘만의 암호
import java.util.*;
class Solution {
public String solution(String s, String skip, int index) {
// 정답을 만들기 위한 StringBuilder 생성
StringBuilder sb = new StringBuilder();
// ArrayList로 skip 글자들을 빼고 저장할 List 생성
List<Character> exceptSkipChar = new ArrayList<>();
// skip 글자들을 제외한 배열을 만듦
for(int i = 0; i < 26; i++) {
char alphabet = (char)(97 + i);
if(skip.indexOf(alphabet) != -1) {
continue;
}
exceptSkipChar.add(alphabet);
}
// String s를 한 글자씩 순회
for(char c : s.toCharArray()) {
// 해당 글자의 index에서 조건으로 주어진 index를 더한 값을 구하되, z를 넘어가면 다시 a(0번)으로 돌아와야 하니 나머지의 값을 구함
int findIndex = (exceptSkipChar.indexOf(c) + index) % exceptSkipChar.size();
// StringBuilder에 findIndex에 해당하는 값을 더함
sb.append(exceptSkipChar.get(findIndex));
}
return sb.toString();
}
}
📌 문제 풀이 설명
📌 주의했던 부분
class Solution {
public String solution(String s, String skip, int index) {
StringBuilder answer = new StringBuilder();
for (char letter : s.toCharArray()) {
char temp = letter;
int idx = 0;
while (idx < index) {
temp = temp == 'z' ? 'a' : (char) (temp + 1);
if (!skip.contains(String.valueOf(temp))) {
idx += 1;
}
}
answer.append(temp);
}
return answer.toString();
}
}
📌 문제 풀이 설명