문제 설명
- 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호.
- 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE".
- "z"는 1만큼 밀면 "a".
- 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문 만들기.
풀이
class Solution {
public String solution(String s, int n) {
String answer = "";
char c = ' ';
n %= 26;
for(int i = 0; i < s.length(); i ++){
c = s.charAt(i);
if(c >= 'A' && c <= 'Z'){
c += (char)n;
if (c > 'Z')
c -= 26;
answer += c;
}
else if(c >= 'a' && c <= 'z'){
c += (char)n;
if (c > 'z')
c -= 26;
answer += c;
}
else if(c == ' ')
answer += c;
}
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;
}
public static void main(String[] args) {
Caesar c = new Caesar();
System.out.println("s는 'a B z', n은 4인 경우: " + c.caesar("a B z", 4));
}
}