문제
11655번: ROT13
첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다.
www.acmicpc.net
알고리즘
없음
풀이
Character.isLowerCase()와 Character.isUpperCase() 를 이용해
소문자 혹은 대문자라면 그에 맞게 13번째 뒤에 있는 글자로 바꿔 이어붙인다.
이때 13번째 뒤에 있는 글자가 소문자 범위(97~122) 혹은 대문자 범위(65~90)를 벗어나면
다시 맨앞의 글자로 돌아와야하므로 다음과 같이 나머지 연산을 이용한다.
(char) ((c + 13 - 'a') % 26 + 'a')
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String str = br.readLine();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (Character.isLowerCase(c))
sb.append((char) ((c + 13 - 'a') % 26 + 'a'));
else if (Character.isUpperCase(c))
sb.append((char) ((c + 13 - 'A') % 26 + 'A'));
else
sb.append(c);
}
System.out.println(sb);
}
}
'Algorithm > 백준(BOJ)' 카테고리의 다른 글
[백준] 2225. 합분해 (Java) (0) | 2022.12.02 |
---|---|
[백준] 2210. 숫자판 점프 (Java) (0) | 2022.11.27 |
[백준] 10820. 문자열 분석 (Java) (0) | 2022.11.19 |
[백준] 16937. 두 스티커 (Java) (1) | 2022.11.18 |
[백준] 2422. 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 (Java) (0) | 2022.11.18 |