Algorithm/Java

[프로그래머스 연습문제] 둘만의 암호 - 자바

개발자민호다 2025. 4. 4. 21:54

제목 및 문제 설명

 

 

 

풀이

class Solution {
    public String solution(String s, String skip, int index) {
        StringBuilder answer = new StringBuilder();
        
        for (char c : s.toCharArray()) {
            char shiftedChar = c;//현재 문자를 기준으로 변환하기 위해 for 문 안에서
            int count = 0;
            while (count < index) {
                shiftedChar = (char) ('a' + (shiftedChar - 'a' + 1) % 26);
                if (!skip.contains(String.valueOf(shiftedChar))) {
                    count++;//skip에 포함되지 않는 경우에만 count 증가
                }
            }
            answer.append(shiftedChar);
        }
        
        return answer.toString();
    }
}

 

 

 

 

문제 팁과 풀이, 시행착오

(char) ('a' + (shiftedChar - 'a' + 1) % 26)
/* char형 연산법, 그리고 z가 넘어가버릴때 다시 a로 돌아오기 위해 %26를 붙여주는게
계속 익숙해지지 않는다.. */


(!skip.contains(String.valueOf(shiftedChar)))
/*
contains()메서드 중, 
boolean result = 문자열.contains(확인할_문자열);
로 특정 문자열이 포함 되어있는지 확인할때 쓰인다!
*/