본문 바로가기

컴퓨터/프로그래머스

프로그래머스 - 155652번: 둘만의 암호 [Java]

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

1. 코드

class Solution {
    public String solution(String s, String skip, int index) {
        StringBuilder answer = new StringBuilder();
        for(char c : s.toCharArray()) {
            int cnt = 0;
            for(int i = 0; i < index + cnt; i++) {
                if(++c > 'z')
                    c = 'a';
                if(skip.contains(String.valueOf(c)))
                    cnt++;
            }
            answer.append(c);
        }
        return answer.toString();
    }
}

2. 설명

for(char c : s.toCharArray()) {
    int cnt = 0;
    for(int i = 0; i < index + cnt; i++) {
        if(++c > 'z')
            c = 'a';
        if(skip.contains(String.valueOf(c)))
            cnt++;
    }
    answer.append(c);
}

반복문을 통해서 문자열의 문자 단위로 접근한 다음 문자에 1씩 증가시키며 'z'보다 크다면 'a'로 저장해줍니다. 그리고 skip에 포함되어 있는지 검사한 뒤 포함된다면 cnt를 증가시켜서 반복횟수를 증가시킵니다.

반복문이 종료되면 변화된 문자를 answer에 이어붙이면 문제는 해결됩니다.

3. 정리

  1. 문자를 다룰 줄 알면 쉽게 해결 가능
출처: 프로그래머스 코딩 테스트 연습, 
https://school.programmers.co.kr/learn/challenges