[PGS] 둘만의 암호 - JAVA

최영환·2023년 8월 15일
0

Programmers

목록 보기
26/43

💡 문제

💬 입출력 예시

📌 풀이(소스코드)

class Solution {
    public String solution(String s, String skip, int index) {
        StringBuilder answer = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            // index 만큼 뒤로 이동
            for (int j = 0; j < index; j++) {
                if (++ch > 'z') {
                    ch = 'a';
                }
                // skip 에 포함되는 문자열은 지나감
                while (skip.indexOf(ch) >= 0) {
                    if (++ch > 'z') {
                        ch = 'a';
                    }
                }
            }
            // 변환한 결과 문자열에 추가
            answer.append(ch);
        }
        return answer.toString();
    }
}

📄 해설

접근

  • 간단한 문자열 처리 구현 문제이다.
  • 문제에서 주어진 조건들을 충실히 이행하자.
    • 문자열 s 의 각 알파벳을 index 만큼 뒤의 알파벳으로 바꾼다.
    • index 만큼의 뒤의 알파벳이 z 를 넘어갈 경우 다시 a 로 돌아간다.
    • skip 에 있는 알파벳은 제외하고 건너뛴다.
  • 문자열의 각 문자를 추출해내는 것은 String.chartAt() 메소드, skip 에 있는 알파벳인지를 판별하는 것은 String.indexOf() 메소드를 사용해서 판별할 수 있다.

과정

  • 문자열 s 를 순회하며 각 알파벳을 String.charAt() 메소드로 추출하고, 아래 과정을 index 만큼 반복해서 수행한다.
  1. 추출한 문자 ch 의 값을 1 증가시킨다. 이때, ch 가 z 를 넘어가는지 확인하고, 넘어간다면 a 로 변경해준다.
  2. chskip 에 포함되는 알파벳인지를 확인한다. 이때, String.indexOf() 메소드를 사용한다.
    • 해당 메소드는 문자열 내에서 매개변수로 받은 문자의 인덱스 번호를 반환하는데, 찾지 못하면 -1 을 반환한다.
    • 따라서, 해당 메소드의 반환 값이 0 이상일 경우에만 과정 1 을 수행한다.
profile
조금 느릴게요~

0개의 댓글