https://programmers.co.kr/learn/courses/30/lessons/12926

 

코딩테스트 연습 - 시저 암호

어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀

programmers.co.kr

 

 

문제 분석

- 입력받은 알파벳 s의 길이만큼 임시 char 배열(temp)을 생성하고, 알파벳 s를 char 배열에 쪼개어넣는다.

- 각각의 자리별로 for문을 통해 알파벳 길이만큼 반복하여 조건에 따라 정답 배열에 더한다.

- 만일 배열의 알파벳이 소문자일 경우 -'a'만큼 빼고 이동할 길이(n)만큼 더하여 모드(%26)를 사용한 후 다시 'a'만큼 더해준다.

- 만일 배열의 알파벳이 대문자일 경우 -'A'만큼 빼고 이동할 길이(n)만큼 더하여 모드(%26)를 사용한 후 다시 'A'만큼 더해준다.

- 만일 배열의 알파벳이 공백일 경우 그대로 더한다.

 

 

문제 풀이

1. 입력받은 알파벳을 char배열에 쪼개어 담는다.

2. for문을 통해 알파벳 길이만큼 각 조건을 체크하여 정답에 추가한다.

3. 대소문자의 경우, 해당 알파벳에 시작값 'a'와 'A'만큼 뺀 후 이동거리 n만큼을 더하여 모드(%26)를 사용하며 시작값 'a'와 'A'만큼을 다시 더해준다.

4. 공백일 경우 해당 값을 그대로 더한다.

class Solution {
    public String solution(String s, int n) {
        String answer = "";
        
        char[] temp = new char[s.length()];
        temp = s.toCharArray();
        
        for(int i=0;i<temp.length;i++){
            if(temp[i]>='a' && temp[i]<='z'){
                answer += (char)((temp[i]-'a'+n)%26+'a');
            }else if(temp[i]>='A' && temp[i]<='Z'){
                answer += (char)((temp[i]-'A'+n)%26+'A');
            }else{
                answer += temp[i];
            }
        }
        return answer;
    }
}

 

 

https://github.com/SOEUN2/Algorithm