<문제>
<풀이>
앞의 알파벳 개수 세는 문제와 마찬가지로, 이 문제도 아스키코드를 이용하면 쉽게 풀리는 문제이다.
- 입력받은 문자열을 char배열에 넣고 for문으로 앞에서부터 검사한다.
- char배열의 문자를 int로 형변환 해주어 아스키코드로 변환한다.
- 변환한 문자가 대문자일때와 소문자일때로 나눔(아스키코드로)
- 대문자, 소문자의 경우 각각 아스키코드에서 13을 더했을 때 그 범위를 넘어가면 +13대신 -13 해주면 됨(알파벳이 각각 26개라 가능)
import java.util.*;
import java.io.*;
public class ROT13 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//입력 문자열
char[] input = br.readLine().toCharArray();
//한글자씩 검색, 변경
for(int i = 0; i < input.length; i++) {
int ascii = (int)input[i];
if(ascii>=65 & ascii<=90) {
//대문자
if(ascii+13>90) {
//대문자 소문자 각 26개 이므로, 13을 더했을 때 범위를 넘어가는 수는 -13을 해주면 됨.
input[i] = (char)(ascii-13);
} else {
input[i] = (char)(ascii+13);
}
} else if(ascii>=97 & ascii <= 122) {
//소문자
if(ascii+13>122) {
input[i] = (char)(ascii-13);
} else {
input[i] = (char)(ascii+13);
}
}
}
System.out.println(input);
}
}
<결과>
'알고리즘 공부...공......공' 카테고리의 다른 글
[백준: 알고리즘_Java] 10808번_알파벳 개수 (0) | 2022.01.14 |
---|---|
[백준: 알고리즘_Java] 1158번_요세푸스 문제 (0) | 2022.01.13 |
[백준: 알고리즘_Java] 9613번_GCD 합 (0) | 2022.01.07 |
[백준: 알고리즘_Java] 2609번_최대공약수와 최소공배수 (0) | 2022.01.07 |
[백준: 알고리즘_Java] 10430번_나머지 (0) | 2022.01.06 |
댓글