[알고리즘/프로그래머스] 12926. 시저 암호

jae_s_a·2022년 9월 27일
0

프로그래머스

목록 보기
21/26

문제

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


시저 암호

문제 설명

  • 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다.
  • 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다.
  • 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.

제한 조건

  • 공백은 아무리 밀어도 공백입니다.
  • s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
  • s의 길이는 8000이하입니다.
  • n은 1 이상, 25이하인 자연수입니다.

이 문제를 풀면서 Character.isLowerCaseCharacter.isUpperCase를 알게 되었다.
꽤나 유용한 메서드할 것 같은 알고리즘 문제를 풀 때 시간을 아낄 수 있는 방법이 될 것 같다.


class Solution {
    public String solution(String s, int n) {

        String answer = "";

        for(int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);

            if(c == ' ') {
                answer += " ";
                continue;
            }

            if(Character.isLowerCase(c)) {
                // 소문자
                if(c + n > 122) {
                    System.out.println("Character.isLowerCase(c) >" + ((c + n) - 26));
                    c = (char) ((c + n) - 26);

                } else {
                    c = (char) (c + n);
                }
            } else if(Character.isUpperCase(c)) {
                // 대문자
                if(c + n > 90) {
                    c = (char) ((c + n) - 26);
                    System.out.println("Character.isUpperCase(c) >" + c);
                } else {
                    c = (char) (c + n);
                }
            }
            answer += c;
        }
        return answer;
    }
}
profile
if not now, when

0개의 댓글