본문 바로가기
Algorithm

[Algorithm] 둘만의 암호

by 준그래머 2023. 11. 10.
반응형
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

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 이 케이스를 생각 못해서 오래 걸렸다.

 

반응형