Jam's story

[프로그래머스] 시저 암호 본문

코딩테스트/프로그래머스

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

애플쩀 2022. 8. 5. 22:38
class Solution {
    public static String solution(String s, int n) {
        String answer = "";
        char[] cArr=s.toCharArray();
        for(int i=0; i<cArr.length; i++){
             if(!String.valueOf(cArr[i]).equals(" ")){
                if(cArr[i]=='z'){
                     cArr[i]=(char)(cArr[i]+(n-26));
                }else{
                    cArr[i]=(char)(cArr[i]+n);
                }
             }
        }
           answer=String.valueOf(cArr);
     
        return answer;
    }
    /*
    public static void main(String[] args){
        String s="AB";
        int n=1;
        solution(s,n);
    }
    */
}

이렇게 풀었는데 , 실행은 통과하지만 제출에서 실패

소문자는 소문자끼리 루프가 돌고, 대문자는 대문자끼리 루프가 돌아야한다고 한다.

 

 

  • char 배열로 바꿔서  , for 문을 돌면서 문자 하나하나 검사
  • 공백이면 그대로 answer에 추가하고 continue로 다음 i 검사
  • 소문자일 경우와 대문자일 경우를 나누어서
  •  우선 n만큼 더한다음에 z와 Z를 넘으면-26해주기,
class Solution {
    public static String solution(String s, int n) {
        String answer = "";
        char[] cArr=s.toCharArray();
        for(int i=0; i<cArr.length; i++){
           
            if(cArr[i]==' '){
                answer+=cArr[i];
                continue;
            }
            if(Character.isLowerCase(cArr[i])){
                cArr[i]=(char)(cArr[i]+n);
                if(cArr[i]>'z') cArr[i]-=26;
            }else if(Character.isUpperCase(cArr[i])){
                cArr[i]=(char)(cArr[i]+n);
                 if(cArr[i]>'Z') cArr[i]-=26;
            }
            answer+=cArr[i];
        }
           ///answer=String.valueOf(cArr);
           System.out.println(answer);    
        return answer;
    }
    /*
    public static void main(String[] args){
        String s="AB";
        int n=1;
        solution(s,n);
    }
    */
}

 

Comments