[프로그래머스,Level 1] 시저 암호(JAVA 구현)
코테/프로그래머스(Programmers)

[프로그래머스,Level 1] 시저 암호(JAVA 구현)

반응형

- 첫 풀이 및 정답풀이

  이 문제는 n의 값에 따라 문자열의 각 문자들이 변해야 하기 때문에 아스키코드가 중요하다는 것을 알 수 있다. 모든 아스키코드값을 알 수 없기 때문에 필요할 때마다 찾아보면 된다. A ~ Z의 아스키 코드는아스키코드는 65 ~ 90까지이고, a ~ z의 아스키코드는 97 ~ 122이다. 이를 이용해서 적절한 조건에 따라 처리해주면 된다.

class Solution {
    public String solution(String s, int n) {
        String answer = "";
        
        // 1. 문자열 탐색
        for(int i = 0;i<s.length();i++){
            // 2. 공백은 공백처리 후 넘어간다.
            if(s.charAt(i) == ' ') {
                answer+=" ";
                continue;
            }
            // 3. A ~ Z의 경우 => n만큼 밀린 문자가 Z인 90을 넘을 경우 -26을 통해 A부터 시작, 아니면 그냥 밀린 문자를 추가.
            if('A'<=s.charAt(i) && s.charAt(i)<='Z'){
                answer+= (s.charAt(i)+n) >90 ? (char)((s.charAt(i)+n) -26) : (char)((s.charAt(i)+n));
            }
            // 4. a ~ z의 경우 => n만큼 밀린 문자가 z인 122를 넘을 경우 -26을 통해 a부터 시작, 아니면 그냥 밀린 문자를 추가.
            else{
                answer+= s.charAt(i)+n >122 ? (char)((s.charAt(i)+n) -26) : (char)((s.charAt(i)+n));
            }

        }
        
        return answer;
    }
}
반응형