1. 문자열을 입력받는다.
2. 13글자씩 민 문자열을 저장할 StringBuilder를 생성한다.
3. 문자열을 한 글자씩 검사해서 알파벳일 경우 13글자를 민다.
예를 들어 A라면 L이 되도록 하면 된다.
그런데 원래 알파벳이 O였다면 B가 되어야 한다는 점을 주의해야 한다.
O는 15번째 알파벳인데 알파벳의 총 개수는 26개이기 때문에
단순히 O+13을 하면 28이 돼 알파벳의 개수를 넘어 전혀 상관없는 글자가 되기 때문이다.
따라서 14번째 알파벳인 N을 기준으로 N 이전의 알파벳이라면 +13을 하고
N 이후의 알파벳이라면 -13을 해주면 된다.
4. 각 자리의 알파벳을 상황에 맞게 변형시키고 StringBuilder.append()로 문자열을 생성한다.
알파벳이 아니라면 본래의 문자를 그대로 append()한다.
5. 완성된 StringBuilder를 출력한다.
import java.io.*;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
StringBuilder sb = new StringBuilder();
for(int i=0;i<str.length();i++){
char c = str.charAt(i);
if(c>='a'&&c<='z'){
if(c>='n'){
// 단순히 c-13을 계산한 결과는 int임
// 하지만 sb.append는 문자를 추가하는 메서드라서 (char)로 캐스팅을 해줘야 함
sb.append((char)(c-13));
}
else{
sb.append((char)(c+13));
}
}
else if(c>='A'&&c<='Z'){
if(c>='N'){
sb.append((char)(c-13));
}
else{
sb.append((char)(c+13));
}
}
else{
sb.append(c);
}
}
System.out.println(sb);
}
}
'Algorithm > [BOJ] - JAVA' 카테고리의 다른 글
[백준] 1476 : 날짜 계산 JAVA 풀이 (0) | 2022.09.08 |
---|---|
[백준] 10824 : 네 수 JAVA 풀이 (0) | 2022.09.05 |
[백준] 2743 : 단어 길이 재기 JAVA 풀이 (0) | 2022.09.05 |
[백준] 10820 : 문자열 분석 JAVA 풀이 (0) | 2022.09.05 |
[백준] 1100 : 하얀 칸 JAVA 풀이 (0) | 2022.06.18 |