알고리즘

[프로그래머스] 시저 암호(Java) *

muerha 2024. 11. 29. 21:15

 

 

 

 


 

 

 

나의 풀이

class Solution {
	public String solution(String s, int n) {
		String answer = "";
		for(int i = 0 ; i < s.length() ; i++) {
			char ch = s.charAt(i);
			if(ch == ' ') { 
				answer += ch;
				continue;
			}
			if(ch >= 'a' && ch <= 'z') { 
				if(ch + n > 'z') {
					answer += (char)(ch - 26 + n);
				}else {
					answer += (char)(ch + n);
				}
			}else if(ch >= 'A' && ch <= 'Z') { 
				if(ch + n > 'Z') {
					answer += (char)(ch - 26 + n);
				}else {
					answer += (char)(ch + n);
				}
			}
		}
		return answer;
    }
}

 

 z가 넘어가면 ch에서 알파벳 갯수(26)를 빼고 거리(n)를 더해준다.

 

 

 

 

 

다른 사람의 풀이

class Solution {
    public String solution(String s, int n) {
          String answer = "";
          
          
          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');
              }
              
              answer += ch;
          }
              
          
          return answer;
      }
}