시저 암호
문제 설명
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.
제한 조건
- 공백은 아무리 밀어도 공백입니다.
- s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
- s의 길이는 8000이하입니다.
- n은 1 이상, 25이하인 자연수입니다.
입력값
s | n | result |
"AB" | 1 | "BC" |
"z" | 1 | "a" |
"a B z" | 4 | "e F d" |
Solution
class Solution {
public String solution(String s, int n) {
String answer = "";
n %= 26;
for(int i=0; i<s.length(); i++){
char c = s.charAt(i);
if(s.charAt(i)==' '){
answer += ' ';
}else if(c+n>'z'){
answer += (char)('a' + n - ('z' - c + 1));
}else if(c+n>'Z' && c<'a'){
answer += (char)('A' + n - ('Z' - c + 1));
}else{
answer += (char)(c + n);
}
}
return answer;
}
}
ASCII 표를 참고해서 계산했다. https://www.asciitable.com/
char 자료형의 문자들은 위의 ASCII표에 따라서 정수값을 갖는다. 대문자 A to Z는 65~90, 소문자 a to z는 97~122까지이다. 알파벳을 n만큼 민다는 것은 char형의 알파벳에 n만큼 더해주는 것을 의미한다. 그리고 z나 Z를 넘어가면 다시 a나 A에서 시작해줘야하기 때문에 조건문을 붙여서 제대로 처음부터 밀게 설계했다.
'Algorithm' 카테고리의 다른 글
11.20.(일) Programmers Java Lv1 비밀지도 (1) | 2022.11.20 |
---|---|
11.20.(일) Programmers Java Lv1 최소직사각형 (0) | 2022.11.20 |
11.19.(토) Programmers Java Lv1 3진법 뒤집기 (0) | 2022.11.19 |
11.19.(토) Programmers Java Lv1 예산 (0) | 2022.11.19 |
11.18.(금) Programmers Java Lv1 이상한 문자 만들기 (0) | 2022.11.19 |