티스토리 뷰

프로그래머스 12926번 - 시저 암호

프로그래머스 12926번 - https://programmers.co.kr/learn/courses/30/lessons/12926

 

요구사항

1. 문자열의 공백을 제외한 문자 중 알파벳을 n만큼 밀어서 암호화된 문자열을 반환하라.

 

요구사항 분석 및  풀이과정

1. 알파벳의 아스키코드에 n을 더하여 알파벳을 밀 수 있다.

2. 하지만 n을 더했을 경우 알파벳의 아스키코드 범위를 넘어갈 수 있으므로, 알파벳들의 아스키코드 범위를 생각하여 나머지 연산을 이용하여 넘어갈 경우 처음으로 돌아오도록 한다.

3. 알파벳이 대문자인 경우와 소문자인 경우 아스키코드 범위가 다른 것을 명심하여야 한다.

 

소스코드 작성

class Solution {

    public String solution(String s, int n) {
        char[] chars = s.toCharArray();
        final int SPACE = ' ';
        
        for(int i = 0; i < chars.length; i++) {
            if (chars[i] != SPACE) {
                int start = Character.isUpperCase(chars[i]) ? 'A' : 'a';
                int end = Character.isUpperCase(chars[i]) ? 'Z' : 'z';
                int idx = chars[i] - start;
                chars[i] = (char)((idx + n) % (end - start + 1) + start);
            }
        }
        
        return String.valueOf(chars);
    }
}

 

결과

 

소스코드 깃허브 주소

링크

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함