그리디 알고리즘을 사용했다.
class Solution {
public String solution(String s, int n) {
String answer = "";
for(int i=0; i<s.length(); i++) {
if(s.charAt(i) == ' ') answer += " ";
else {
int temp = (int)s.charAt(i) +n;
if((temp >90 && Character.isUpperCase(s.charAt(i))) || (temp >122 && Character.isLowerCase(s.charAt(i)))) temp -= 26;
answer += (char)temp;
}
}
return answer;
}
}
class Caesar {
String caesar(String s, int n) {
String result = "";
n = n % 26;
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (Character.isLowerCase(ch)) {
ch = (char) ((ch - 'a' + n) % 26 + 'a');
} else if (Character.isUpperCase(ch)) {
ch = (char) ((ch - 'A' + n) % 26 + 'A');
}
result += ch;
}
return result;
}
}
(ch - 'a' + n) % 26 + 'a'
와 (ch - 'A' + n) % 26 + 'A'
같은 식에서 배울게 있어보인다.
나머지 연산을 잘 기억해야겠다.