본문 바로가기

문제 풀이/Programmers

[프로그래머스] 시저 암호 (JAVA)

문제 출처 - Programmers

문제는 여기

 

코딩테스트 연습 - 시저 암호

어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀

programmers.co.kr


[풀이]

1. 문자열의 각 인덱스의 문자를 구해준다.

2. 1. 에서 구해진 문자를 n만큼 더해준다.

3. 만약 z라면 a로 변경해주고 다시 더해준다.

4. 만약 Z라면 A로 변경해주고 다시 더해준다.

5. 만약 공백이라면 그냥 넘어간다.

6. 해당 문자를 정답에 더해준다.

7. 위 과정을 입력받은 문자의 길이만큼 반복한다.

8. 결과를 출력한다.

[접근]

1. 입력받은 문자열을 문자 단위로 나눠 n 만큼씩 증가시켜주면 되겠다고 생각하였다.

[코드]

class Solution {
    public String solution(String s, int n) {
        String answer = "";
        
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            
            for (int j = 0; j < n; j++) {
                // 'z'면 'a'로 변경
                // 변경하면서 +1이 진행된 것이니까 continue 해줌
                if (c == 'z') {
                    c = 'a';
                    continue;
                }
                // 'Z'면 'A'로 변경
                // 변경하면서 +1이 진행된 것이니까 continue 해줌
                else if (c == 'Z') {
                    c = 'A';
                    continue;
                }
                // 공백이면 그냥 넘어가기
                else if (c == ' ')
                    break;
                c += 1;
            }
            
            answer += c; // 정답에 더하기
        }
        
        return answer;
    }
}