백준
이런저런 문제들 #11655 ROT13[JAVA]
chaechaepower
2023. 7. 5. 21:52
https://www.acmicpc.net/problem/11655
11655번: ROT13
첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다.
www.acmicpc.net
문제 접근
1) char에 +13한 결과, 'z' 또는 'Z'를 넘어가는 경우는 범위를 벗어나는 경우이므로 범위를 벗어나는 만큼 a, A에서 더해주면 된다
2) 'n' 또는 'N'부터 +13할 경우 범위를 벗어나므로 이 경우 -13을 해준다.
코드
1)
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();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if ('a' <= c && c <= 'z') {
c += 13;
if (c > 'z') {
int temp = c - 'z';
c = (char) (temp - 1 + 'a');
}
sb.append(c);
} else if ('A' <= c && c <= 'Z') {
c += 13;
if (c > 'Z') {
int temp = c - 'Z';
c = (char) (temp - 1 + 'A');
}
sb.append(c);
} else {
sb.append(c);
}
}
System.out.println(sb);
}
}
2)
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();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if ('a' <= c && c <= 'z') {
if (c >= 'n') {
c -= 13;
} else {
c += 13;
}
sb.append(c);
} else if ('A' <= c && c <= 'Z') {
if (c >= 'N') {
c -= 13;
} else {
c += 13;
}
sb.append(c);
} else {
sb.append(c);
}
}
System.out.println(sb);
}
}