처음에 n이 커서 알파벳 범위를 여러 번 도는 경우를 생각하지 못해서 통과하지 못했다.
n 대신 26으로 나눈 값 k를 더해줘서 알파벳 범위 안에서만 돌도록 조정해주었고,
대문자와 소문자로 경우를 나누어서 Z나 z는 추가로 -26을 해주었다.
class Solution {
public String solution(String s, int n) {
String answer = "";
//char배열로 바꿈
char[] arr = s.toCharArray();
for (int i = 0; i < arr.length; i++) {
//알파벳 안에서만 돌면 되므로 26으로 나누어서 나머지값만 더함
int k = n % 26;
//대문자인데 더했을 때 'Z'보다 크거나, 소문자인데 더했을 때 'z'보다 크면 -26
if ((arr[i] <= 'Z' && arr[i] + k > 'Z') || (arr[i] >= 'a' && arr[i] + k > 'z')) {
arr[i] = (char) (arr[i] + k - 26);
//공백은 그대로 공백
} else if (arr[i] == ' ') {
arr[i] = arr[i];
} else {
//그 외에는 k더함
arr[i] = (char) (arr[i] + k);
}
}
//char배열을 다시 String으로 변환
answer = String.valueOf(arr);
return answer;
}
}
'Language > JAVA' 카테고리의 다른 글
[Java with Unit Test] equals와 hashCode (0) | 2022.06.16 |
---|---|
[프로그래머스] 신규 아이디 추천 (0) | 2022.01.29 |
#문자열 포함여부 확인, 치환 + 자주 쓰는 정규식 패턴 (0) | 2022.01.27 |
[프로그래머스] 숫자 문자열과 영단어 (0) | 2022.01.27 |
[프로그래머스] 문자열 내림차순으로 배치하기 (0) | 2022.01.27 |