이제 처음에 구해 두었던 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();
}
}