영어 대문자와 소문자로 이루어진 문자열이 주어졌을 때
바꾸어 출력하는 프로그램을 작성하는 문제이다.
WrongAnswer
wRONGaNSWER
문자열의 각 문자를 하나씩 검사하면서
대문자인지 소문자인지 판단한 뒤 변환하면 된다.
문자를 검사하는 방법은 두 가지가 있다.
이번 풀이에서는 ASCII 값을 이용한 방법을 사용했다.
Java에서 문자(char)는 내부적으로 숫자(ASCII 코드)로 저장된다.
| 문자 | ASCII 값 |
|---|---|
| A | 65 |
| Z | 90 |
| a | 97 |
| z | 122 |
대문자와 소문자의 차이는 32이다.
a - A = 32
따라서
대문자 → 소문자
문자 + 32
소문자 → 대문자
문자 - 32
또는 이렇게 표현할 수도 있다.
'a' - 'A'
문자열에서 특정 위치의 문자를 가져오는 메서드
char c = input.charAt(i);
문자를 하나씩 변환하기 위해
결과를 char 배열에 저장한다.
char[] result = new char[input.length()];
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
char[] result = new char[input.length()];
for(int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if(c >= 'a' && c <= 'z') {
result[i] = (char)(c - ('a' - 'A'));
} else {
result[i] = (char)(c + ('a' - 'A'));
}
}
System.out.print(result);
}
}
문자열을 한 번만 순회하므로
O(N)
이 문제의 핵심은 다음 세 가지이다.
문자열과 문자(char)의 동작 원리를 이해하기 좋은 기초 문자열 문제이다.