문제풀이 흐름

  1. 입력 문자열의 모든 문자에 대해 반복
    1. 알파벳이 아닌 경우 문자를 그대로 이어 붙이기
    2. 알파벳인 경우 n만큼 밀어 이어 붙이기

코드 작성

1. 입력 문자열의 모든 문자에 대해 반복

StringBuilder builder = new StringBuilder();
for (char c : s.toCharArray()) {
	//C를 n만큼 민 문자를 builder에 이어 붙이기
		builder.append(push(c,n));
}
return builder.toString();

문자 c를 n만큼 민 새로운 문자를 계산하기 위해 메서드를 분리해줍시다.

private char push(char c, int n) {
		//c를 n만큼 밀어 반환
}

1-A. 알파벳이 아닌 경우 문자를 그대로 이어 붙이기

private char push(char c, int n) {
	if(!Character.isAlphabetic(c)) return c;

	// c를 n만큼 밀어 반환
}

1-B. 알파벳인 경우 n만큼 밀어 이어 붙이기

int offset = Character.isUpperCase(c) ? 'A' : 'a';
int position = c - offset;
position = (position + n) % ('Z' - 'A' + 1);
return (char) (offset + position);