[programmers] 시저 암호 (java) -1level

2022. 2. 15. 15:48Algorithm/Programmers

문제 설명

 

문제 해결

 

아스키코드를 문자에서 숫자 , 숫자에서 문자로 변환하면 어렵지 않게 풀 수 있다.

 

public class 시저암호 {
    public String solution(String s, int n) {
        String answer = "";
        char[] arr = s.toCharArray();
        int[] a = new int[arr.length];
        for (int i = 0; i < arr.length; i++){
            if(arr[i] != ' '){
                a[i] = arr[i]; // 따로 캐스팅하지 않아도 된다.
                if(a[i] >=65 && a[i] <= 90){
                    a[i] = a[i] +n; // n 만큼 증가시키고
                    if(a[i] > 90) a[i] -= 26;
                }else if(a[i] >=97 && a[i] <= 122){
                    a[i] += n;
                    if(a[i] > 122) a[i] -= 26;
                }
            }else{
                a[i] = 32; // space 를 나태내는 아스키코드 숫자 32
            }
        }
        for (int i = 0; i < arr.length; i++){
            arr[i] = (char)a[i];
            answer += arr[i];
        }

        return answer;
    }
}

 

+ ) 아스키코드는 영문 알파벳을 사용하는 대표적인 문자 인코딩이다.

A부터 Z까지 65 ~ 90   ,  a 부터 z 까지는 97 ~ 122라고 기억해 두자.

공백은 32이다.

 

 

다른 사람의 풀이

 

Character.isLowerCase 와 isUpperCase를 조건문과 같이 사용하는 방법을 알게 되었다. 

728x90