프로그래머스

[프로그래머스] 시저암호 - Java(자바)

nan2 2023. 1. 30. 13:56
반응형
문제설명
  • 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다.
  • 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다.
  • 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.

 

제한사항
  • 공백은 아무리 밀어도 공백입니다.
  • s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
  • s의 길이는 8000이하입니다.
  • n은 1 이상, 25이하인 자연수입니다.

 

입출력 예

s n result
"AB" "z" "a B z"
1 1 4
"BC" "a" "e F d"

 


[ 내가 푼 방법 ]

class Solution {
    public String solution(String s, int n) {
        String answer = "";
        char[] chars = s.toCharArray();
        
        for (char c : chars) {
            if ((int)c == 32) {                 // 띄어쓰기
                answer += " ";
                continue;
            }
            int num = ((int) c) + n;
            if (Character.isUpperCase(c)) {     // 대문자: 65~90
                num = num - 90 > 0 ? num -26 : num;
            } else {                            // 소문자: 97~122
                num = num - 122 > 0 ? num - 26 : num;
            }
            answer += String.valueOf((char) num);
        }
        
        return answer;
    }
}

 

1. 공백인 경우 그대로 answer에 " " 를 더해준다.

 

2. char이 대문자인지 소문자인지 구분해서 범위를 정해준다. 

아스키코드 : 대문자 A(65) ~ 대문자 Z(90), 소문자 a(91) ~ 소문자 z(122)

 

 

반응형