Algorithm
[Algorithm] 둘만의 암호
준그래머
2023. 11. 10. 16:37
반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내가 느끼기에는 알고리즘 1단계 치고 너무 어려웠다…
private final char[] alphabet
= new char[]{'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
public String solution(String s, String skip, int index) {
String answer = "";
char[] sChars = s.toCharArray();
char[] skipChars = skip.toCharArray();
for(int i = 0; i < sChars.length; i++){
char sChar = sChars[i];
int sIndex = 0;
for(int k = 0; k < alphabet.length; k++){
if(sChar == alphabet[k]) break;
else sIndex++;
}
for(int j = 0; j < index; j++){
sIndex++; // 먼저 index를 1 증가시켜야 함
if(sIndex >= alphabet.length) { // 길이가 더 길어지면 0으로 초기화
sIndex = 0;
}
sChar = alphabet[sIndex];
for(int l = 0; l < skipChars.length; l++){
if(sChar == skipChars[l]) {
l = -1; // 처음 부터 다시 비교 해야함
sIndex++;
if(sIndex >= alphabet.length) {
sIndex = 0;
}
sChar = alphabet[sIndex];
}
}
}
answer += sChar;
}
return answer;
}
테스트 케이스
"aukks", "wbqd", 5 ⇒ “happy”
"a", "cb", 1 ⇒ “d” (중요)
"a", "bcdefghijk", 20 ⇒ “o”
"a", "cb", 1 이 케이스를 생각 못해서 오래 걸렸다.