더북(TheBook)

이제 처음에 구해 두었던 offset과 방금 계산한 position을 이용하여 n만큼 밀린 문자를 만들어 반환합니다.

return (char) (offset + position);

완성된 push() 메서드를 사용하여 solution() 메서드의 반복문을 완성시켜 줍니다.

for (char c : s.toCharArray()) {
    builder.append(push(c, n));
}

이렇게 자바 내장 라이브러리의 메서드와 아스키 코드를 이용하여 문제를 풀 수 있습니다.

 

전체 코드

4장/시저_암호.java

public class Solution {
    private char push(char c, int n) {
        if (!Character.isAlphabetic(c)) return c;
 
        int offset = Character.isUpperCase(c) ? 'A' : 'a';
        int position = c - offset;
        position = (position + n) % ('Z' - 'A' + 1);
        return (char) (offset + position);
    }
 
    public String solution(String s, int n) {
        StringBuilder builder = new StringBuilder();
        for (char c : s.toCharArray()) {
            builder.append(push(c, n));
        }
        return builder.toString();
    }
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.