(level1) 둘만의 암호

송재호·2025년 8월 13일
0

https://school.programmers.co.kr/learn/courses/30/lessons/155652

허용된 알파벳, 불가능한 알파벳을 판별하기 위해 26 사이즈의 boolean 배열을 만들었다.
skip을 돌면서 배열에 마킹을 해준다.

그 이후에 s의 각 캐릭터 별로 아래 행동을 해줌

  • index만큼 이동할건데, 일단 +1해보고 알파벳 범위를 넘어가면 26으로 모듈러연산함. 그리고 이것이 사용 가능 알파벳이면 이동 카운트를 하나 증가시킴 (사용 가능한 알파벳이 아니면 카운트를 증가시키지 않고 스킵).
  • 결과적으로 이동 카운트가 index 만큼 수행됨을 확인했으면 내가 원하는 알파벳으로 변환이 성공한 것이므로 정답 스트링에 추가함
import java.util.*;
class Solution {
    public String solution(String s, String skip, int index) {
        StringBuilder sb = new StringBuilder();
        
        boolean[] alpha = new boolean[26];
        Arrays.fill(alpha, true);
        
        for (char c : skip.toCharArray()) {
            alpha[c - 'a'] = false;
        }
        
        for (char c : s.toCharArray()) {
            int pos = c - 'a';
            int move = 0;
            
            while (move < index) {
                pos = (pos + 1) % 26;
                if (alpha[pos]) {
                    move++;
                }
            }
            
            sb.append((char) ('a' + pos));
        }
        
        return sb.toString();
    }
}
profile
식지 않는 감자

0개의 댓글