본문 바로가기

Algorithm/Programers - Java

[프로그래머스] 시저암호 / isLowerCase

 

Level. 1

 

문제

 

풀이

class Solution {
    public String solution(String s, int n) {
        String answer = "";
        n = n%26;
        for(int i=0; i<s.length(); i++){
            char ch = s.charAt(i);
            if(Character.isLowerCase(ch)){
                ch = (char)(ch+n);
                if(!Character.isLowerCase(ch))
                    ch -= 26;
            }
            if(Character.isUpperCase(ch)){
                ch = (char)(ch+n);
                if(!Character.isUpperCase(ch))
                    ch -= 26;
            }
            answer += ch;
        }
        return answer;        
    }
}

 

 

해결방법

z 는 1만큼 밀면 a가 되고, Z는 1만큼 밀면 A가 되어야 한다. 

  1. 각각 소문자일때 대문자일 때를 구분한다.
  2. + 1 을 했을 때 더 이상 소문자, 대문자가 아닐 경우 각각 z, Z 에서  + 1 이 되어 소문자, 대문자의 범위를 넘어갔다는 것을 의미한다
    -26 해주어 a, A로 변경한다. 

 

 

Character.isLowerCase(), Character.isUpperCase()

public static boolean isLowerCase(char ch)
public static boolean isUpperCase(char ch)

입력받은 인자가 영문 소문자인지 대문자인지 여부를 판단하여 각각 true, false값을 리턴한다.