JAVA/Algorithm

[프로그래머스/java] 시저 암호 (문자열+숫자)

nang. 2020. 12. 2. 00:31
반응형
SMALL

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

 

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

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

programmers.co.kr

 

 

  • 문자열에 숫자 더하기
  • 대소문자 구분 조건문

 

class Solution {
    public String solution(String s, int n) {
        String answer = "";
        
        for(int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i); // 문자열 추출
            
            if(ch >= 'a' && ch <= 'z') { // 추출한 문자열이 소문자라면
                if(ch + n > 'z') { // n만큼 더했는데 그게 z를 넘어간다면
                    answer += (char)(ch + n - 26); // 소문자 총 개수인 26을 빼준다. 만약 a에 n 더해서 27이면 다시 a니까 26을 뺀 1이 a가 되는 것
                } else {
                    answer += (char)(ch + n); // z 안넘어가면 그냥 더한 숫자에 해당하는 문자열
                }
            } else if(ch >= 'A' && ch <= 'Z') { // 추출한 문자열이 대문자라면
                if(ch + n > 'Z') {
                    answer += (char)(ch + n - 26);
                } else {
                    answer += (char)(ch + n);
                }
            } else { // 공백이면 그냥 공백 더하기
                answer += (char)ch;
            }
        }
        
        return answer;
    }
}
반응형
LIST