[프로그래머스] 시저 암호- Java

선예원·2021년 10월 15일
0
post-thumbnail

문제 설명

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

풀이


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

        char c = ' ';
        n %= 26;
        for(int i = 0; i < s.length(); i ++){
            c = s.charAt(i);
            if(c >= 'A' && c <= 'Z'){
                c += (char)n;
                if (c > 'Z')
                    c -= 26;
                answer += c;
            }
            else if(c >= 'a' && c <= 'z'){
                c += (char)n;
                if (c > 'z')
                    c -= 26;
                answer += c;
            }
            else if(c == ' ')
                answer += c;
        }
        return answer;
    }
}

다른 사람의 풀이

class Caesar {
    String caesar(String s, int n) {
        String result = "";
    n = n % 26;
    for (int i = 0; i < s.length(); i++) {
      char ch = s.charAt(i);
      if (Character.isLowerCase(ch)) {
        ch = (char) ((ch - 'a' + n) % 26 + 'a');
      } else if (Character.isUpperCase(ch)) {
        ch = (char) ((ch - 'A' + n) % 26 + 'A');
      }
      result += ch;
    }
        return result;
    }

    public static void main(String[] args) {
        Caesar c = new Caesar();
        System.out.println("s는 'a B z', n은 4인 경우: " + c.caesar("a B z", 4));
    }
}

0개의 댓글

Powered by GraphCDN, the GraphQL CDN