본문 바로가기

프로그래머스/1단계

시저 암호

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

 

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

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

programmers.co.kr

class Solution {
    public String solution(String s, int n) {
        String answer = "";
        String [] sp = s.split("");
        
        System.out.println((int)s.charAt(0));
            
                // 65~90 // 97~122
        for(int i = 0; i < s.length(); i++)
        {
            int ss = (int)s.charAt(i);
            if(s.charAt(i)==' ')
            {
                 answer+=" ";
            }
            else if(ss>=65 && ss<=90)
            {
                if(ss+n>90)
                {
                    ss= ss+n-26;
                }
                else
                {
                    ss+=n;
                }
                answer +=(char)ss;
            }
            else if(ss>=97 && ss<=122)
            {
              if(ss+n>122)
                {
                    ss= ss+n-26;
                }
                else
                {
                    ss+=n;
                }
                answer +=(char)ss;
            }
           
            
        }
        
        
        
        return answer;
    }
}

 

문제풀이

z == 90일떄 1만큼옮기면 65로 가야함 결국 90 > 65 차이만큼 빼주면됨

 

다른사람 코드

    n이 위에꺼는 25까지밖에없어서 괜찮지만 n이 50이렇게되면 26빼서는 안됨

   % 26으로 나머지 +해주면됨 

나였으면  (ch+n) % 26 -26 했을듯 넘어간다는 가정하애? 

 

   ch = (char) ((ch - 'a' + n) % 26 + 'a'); 


'프로그래머스 > 1단계' 카테고리의 다른 글

문자열 내림차순으로 배치하기  (0) 2021.11.03
문자열 다루기 기본  (0) 2021.11.03
수박수박수박수박수박수?  (0) 2021.11.03
약수의 합  (0) 2021.11.02
이상한 문자 만들기  (0) 2021.11.02