시저 암호

seheeee_97·2023년 11월 22일
0

회고팀

목록 보기
18/41

E(x)=(x+n)mod26

class Solution {
    public String solution(String s, int n) {
        StringBuilder answer = new StringBuilder();
        
        for(int i=0; i<s.length(); i++){
            char read = s.charAt(i);
            
            if(Character.isUpperCase(read)){
                answer.append((char) ((read - 'A' + n) % 26 + 'A'));
            } else if(Character.isLowerCase(read)){
                answer.append((char) ((read - 'a' + n) % 26 + 'a'));
            } else {
                answer.append(read);  
            }
        }
        return answer.toString();
    }
}

알파벳 0~25까지 총 26개




문자 - 'A' : A에서 문자가 얼마나 떨어져있는지 계산
문자 - 'A' + n : 이동하는 위치를 계산
(문자 - 'A' + n) % 26 : 값이 0~25사이로 나오게 계산
(문자 - 'A' + n) % 26 + 'A' : A에서 n만큼 떨어진 위치에 있는 알파벳

0개의 댓글