프로그래머 ,백준, 유튜브, 문제

시저암호_프로그래머스

리승우 2022. 9. 26. 17:15

[필요개념]

> char는 int값을 더함으로써 아스키코드표 내용으로 다룰 수 있다!

> charAt(i)

> toCharArray()

 

 

 

class Solution {
    public String solution(String s, int n) {
        String answer = "";

        //아스키코드를 써보려했지만, 90 = Z 91=[ 인 관계로 부적합하다고 판단!
        // 그냥 배열을 만들어서 거기서 돌리는 게 가장 낫겠다고 생각했다.
        // 정정! char를 사용해서 아스키코드를 돌리는 게 배열을 무식하게 만드는 것보다 낫다고 생각한다.

        // 매개변수의 길이만큼 for문 실행
        for(int i=0; i<s.length(); i++){
            //ch변수에 s의 인덱스값을 char형태로 넣음
            char ch = s.charAt(i);

            //만약 빈칸이라면 빈칸만 answer에 넣음
            if(ch==' '){
                answer += ch;
                continue;
            }

            //만약 소문자그룹이라면 n인덱스 앞의 값을 answer에 넣음
            // 전제조건
            // 1. z를 초과하였을 경우, 알파벳 총길이인 26을 뺌
            // 2. 아닐 경우 기존대로 인덱스값 더해서 넣음
            if(ch>='a' && ch<='z'){
                if(ch+n > 'z'){
                    answer += (char)(ch+n-26);
                } else{
                    answer += (char)(ch+n);
                }
            }

            // 위와 동일한 조건임
            if(ch>='A' && ch<='Z'){
                if(ch+n > 'Z'){
                    answer += (char)(ch+n-26);
                } else{
                    answer += (char)(ch+n);
                }
            }
        }

        return answer;
    }
}

    public class Hello {
        public static void main(String[] args) {
            Solution test = new Solution();
            String o = "z";
            int p = 1;
            System.out.println(test.solution(o,p));
        }
    }