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

Benjamin·2023년 3월 17일
0

프로그래머스

목록 보기
47/58


그리디 알고리즘을 사용했다.

내 풀이

class Solution {
    public String solution(String s, int n) {
        String answer = "";
        for(int i=0; i<s.length(); i++) {
            if(s.charAt(i) == ' ') answer += " ";
            else {
                int temp = (int)s.charAt(i) +n;
                if((temp >90 && Character.isUpperCase(s.charAt(i))) || (temp >122 && Character.isLowerCase(s.charAt(i)))) temp -= 26;
                answer += (char)temp;
            }  
        }
        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;
    }
}

(ch - 'a' + n) % 26 + 'a'(ch - 'A' + n) % 26 + 'A' 같은 식에서 배울게 있어보인다.
나머지 연산을 잘 기억해야겠다.

0개의 댓글