반응형
https://www.acmicpc.net/problem/11655
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
char ch = chars[i];
if (!Character.isLetter(ch)) {
continue;
}
int n = ch + 13;
if ((Character.isUpperCase(ch) && n > 'Z') || (Character.isLowerCase(ch) && n > 'z')) {
n -= 26;
}
chars[i] = (char) n;
}
System.out.println(chars);
}
}
자바는 char 타입으로 문자를 저장하는데, UTF16으로 숫자로 저장을 한다. 근데 이 문제는 영대소문자, 공백, 숫자만 사용하므로 아스키 코드를 참고하면 된다.
또 자바는 Character 래퍼타입으로 편의 메서드를 제공하고 있다.
먼저 문자가 아니라면 넘어가고, 문자라면 대문자일 때는 13을 더할 때 'Z'보다 큰지를 비교하는데, 숫자와 문자를 비교할 때는 문자를 숫자로 치환해서 비교하게 된다. 즉 'Z'에 해당하는 정수 (122)로 변환되어 비교된다. 마찬가지로 소문자일 때 13을 더하면 'z'보다 큰지를 비교하고, 넘어간다면 알파벳의 개수인 26개를 빼준다.
마지막으로 System.out.println은 문자 배열도 바로 출력해준다.
반응형
'알고리즘 🤔' 카테고리의 다른 글
[백준 자바 1520] 내리막 길 (골드3) (9) | 2024.07.16 |
---|---|
[백준 자바 1202] 보석 도둑 (골드2) (0) | 2024.07.04 |
[백준 자바 10825] 국영수 (실버4) (2) | 2024.06.27 |
[백준 자바 1076] 저항 (브론즈2) (0) | 2024.06.26 |
[백준 자바 1977] 완전제곱수 (브론즈2) (0) | 2024.06.25 |