문제 풀이
백준 11655번은 브론즈 1 난이도로 구현, 문자열에 관한 문제입니다.
우선 문자열을 입력 받은 뒤 문자열의 길이만큼 반복문을 돌립니다.
이때 charAt()함수를 사용해서 char형으로 문자열을 잘랐고,
그 문자가 A ~ Z 범위인지, a ~ z 범위인지를 구분했습니다.
또 구분한 그 안에서 만약 아스키 코드 값으로 원래 문자 + 13을 했을 때 z의 범위가 넘어갈 경우
문자 - 13을 하면 다시 a값부터 시작하므로 알맞은 문자를 찾을 수 있습니다.
대소문자 둘 다 동일한 방식이므로 아스키 코드만 바꿨습니다.
코드
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String S = br.readLine();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < S.length(); i++) {
char chr = S.charAt(i);
if (chr >= 'A' && chr <= 'Z') {
if (chr + 13 > 90) {
sb.append((char) (chr - 13));
} else {
sb.append((char) (chr + 13));
}
}
else if (chr >= 'a' && chr <= 'z') {
if (chr + 13 > 122) {
sb.append((char) (chr - 13));
} else {
sb.append((char) (chr + 13));
}
}
else {
sb.append(chr);
}
}
bw.write(sb.toString());
bw.flush();
bw.close();
}
}
A ~ Z 대문자의 경우 Z는 아스키 코드로 90이므로 90을 초과하는지,
a ~ z 소문자의 경우 z는 아스키 코드로 122이므로 122를 초과하는지를 확인했습니다.
만약 초과한다면 char형으로 변경한 문자의 값에서 - 13을 해주었습니다.
아니라면 그대로 13을 더해도 z의 범위를 벗어나지 않으므로 + 13을 했습니다.
마지막으로 문자가 아닌 공백, 숫자의 경우도 있으므로 그건 그냥 추가해주기만 하면 됩니다.
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 10828번 : 스택 - JAVA(자바) (0) | 2025.02.27 |
---|---|
[백준] 11656번 : 접미사 배열 - JAVA(자바) (0) | 2025.02.25 |
[백준] 10809번 : 알파벳 찾기 - JAVA(자바) (1) | 2025.02.21 |
[백준] 10808번 : 알파벳 개수 - JAVA(자바) (1) | 2025.02.16 |