문제
11655번: ROT13
첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다.
www.acmicpc.net
풀이
알파벳을 13글자씩 밀어서 출력하면 되는데, 알파벳은 26글자 이므로 14번째 글자 부터는 A(a)부터 다시 돌아가서 출력하면 된다.
- x+13<=26, x<=13
- A~Z 아스키코드 값 : 65~96 (26글자)
- 65+13 = 78
- a~z 아스키코드 값 : 97~122 (26글자)
- 97+13 = 110
코드
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 s = br.readLine();
char c[] = s.toCharArray();
for(int i=0; i<s.length(); i++) {
if(65<= c[i] && c[i] <= 77) c[i] += 13;
else if(78 <= c[i] && c[i] <= 96) c[i] -= 13;
else if(97 <= c[i] && c[i] <= 109) c[i] += 13;
else if(110 <= c[i] && c[i] <= 122) c[i] -= 13;
sb.append(c[i]);
}
System.out.println(sb);
}
}
'PS(Java) > 백준' 카테고리의 다른 글
[PS] 백준 1406번 에디터 (다시 풀기) (0) | 2022.07.06 |
---|---|
[PS] 백준 1388번 바닥 장식 (0) | 2022.07.06 |
[PS] 백준 10799번 쇠막대기 (0) | 2022.05.30 |
[PS] 백준 10828번 스택 (0) | 2022.05.25 |
[PS] 백준 11004번 K번째 수 (0) | 2022.05.24 |