티스토리 뷰

PS/programmers

Level1) 시저 암호

kingsubin 2020. 9. 9. 19:30
class Solution {
    public String solution(String s, int n) {
        char[] arr = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
                      'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
                      'w', 'x', 'y', 'z'};
        char[] brr = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
                      'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
                      'W', 'X', 'Y', 'Z'};
        StringBuffer sb = new StringBuffer();

        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) >= 'a' && s.charAt(i) <= 'z') { 
                sb.append(arr[(s.charAt(i) -'a' + n)%26]);
            } else if (s.charAt(i) >= 'A' && s.charAt(i) <= 'Z') { 
                sb.append(brr[(s.charAt(i) -'A' + n)%26]);
            } else {
                sb.append(" ");
            }
        }
        return sb.toString();
    }
}

- 성공

- 무식한 방법 같긴 한데 다른 방법 생각이 안나서 해봤음 ...

 

class Solution {
    public String solution(String s, int n) {
        String answer = "";
        for (char ch : s.toCharArray()) {
            if (ch == ' ') {
                answer += ch;
            } else if (ch >= 'a' && ch <= 'z') {
                answer += (char) ('a' + (ch + n - 'a') % 26);
            } else {
                answer += (char) ('A' + (ch + n - 'A') % 26);
            }
        }
        System.out.println(answer);
        return answer;
    }
}

- 다른 사람 비슷한 풀이인데 이렇게 하는게 훨씬 좋아보임

- 소문자, 대문자 구분

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

- (char) ('A' + (ch+n-'A') % 26)

'PS > programmers' 카테고리의 다른 글

Level1) 완주하지 못한 선수  (0) 2020.09.10
Level1) 약수의 합  (0) 2020.09.09
Level1) 문자열을 정수로 바꾸기  (0) 2020.09.09
Level1) 수박수박수박수박수박수?  (0) 2020.09.09
Level1) 소수 찾기  (0) 2020.09.09