이제 처음에 구해 두었던 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();
        }
    }
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.