둘만의 암호

Seongjin Jo·2023년 7월 27일
0

프로그래머스 LV1

목록 보기
31/31

문제

풀이

import java.util.*;
class Solution {
    static ArrayList<Character> list = new ArrayList<>();
    public String solution(String s, String skip, int index) {
        String answer = "";
        
        for(char c : skip.toCharArray()){
            list.add(c);
        }
        
        for(int i=0; i<s.length(); i++){     
            char c = s.charAt(i);
            for(int j=1; j<=index; j++){
                c++;
                if(c>'z') c-=26;
                if(list.contains(c)) j--; //한번 더 돌게
            }
            answer+=c;
        }
    
        return answer;
    }
}
  1. 2중 for문으로 s.charAt()을 파헤쳐나가면 된다.
  2. 만약에 해당 s.charAt()인 c가 알파벳 범위를 넘어가면 c-=26;을 해줘야 하는 부분이 핵심부분이다.
  3. 그리고 만약에 건너뛰어야하는 리스트에 해당되는 c면 j--를 해줘서 for문이 한번 더 돌아가게 해주면된다.

0개의 댓글