Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 11718번
- 백준
- 31403번
- 브루트포스트
- 코딩
- 5597번
- 1978번
- 15552번
- 2920번
- 3052번
- 2744번
- 2231번
- 1436번
- 2292번
- 10845번
- 10250번
- 15829번
- 1259번
- 4153번
- 2439번
- 8959번
- 브루트포스
- 10818번
- 자바
- 11654번
- 10828번
- Java
- 팰린드롬수
- 2798번
- 2675번
Archives
- Today
- Total
서비스 기획자 기록
[백준] 2744번 : 대소문자 바꾸기 - Java 본문
https://www.acmicpc.net/problem/2744
- 문제
- 풀이
- 각 문자의 아스키 코드표에서 차이를 기준으로 직접 대소문자 바꾸기
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));
String str = br.readLine();
int N = str.length();
for (int i = 0; i < N; i++) {
char ch = str.charAt(i);
if ((ch-'a') < 0) {
ch = (char)(ch+(int)('a'-'A'));
}
else
ch = (char)(ch-(int)('a'-'A'));
System.out.print(ch);
}
br.close();
}
}
먼저 아스키 코드표 상에서 소문자는 대문자 뒤에 위치한다는 점은 알고 있다는 전제 하에 문제를 풀었다.
ch - 'a'가 0보다 작게 되면 a보다 앞에 위치한 문자이므로 대문자, 아닐 경우 소문자라고 판단할 수 있다.
또한 모든 대문자와 소문자 사이의 차이는 같으므로 'a' - 'A'를 통해 대문자와 소문자 간의 차이를 숫자로 표현할 수 있다.
대문자는 이 차이를 더해서 소문자로, 소문자는 이 차이를 빼서 대문자로 바꾸면 답을 구할 수 있다.
만 이렇게 복잡하게 할 필요없이 메소드를 활용하면 훨씬 쉽게 풀 수 있다.
- UpperCase() , LowerCase() 메소드 사용
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
String b = "";
for(int i=0; i < a.length(); i++){
char c = a.charAt(i);
if(Character.isUpperCase(c)){
b += Character.toLowerCase(c);
} else {
b += Character.toUpperCase(c);
}
}
System.out.println(b);
sc.close();
}
}
isUpperCase()와 isLowerCase()는 대소문자를 검사할 때,
toUpperCase()와 toLowerCase()는 각각 대문자, 소문자로 변환할 때 사용된다.
if문과 메소드를 통해 각 문자가 대소문자인지 쉽게 검사할 수 있고
이를 기준으로 변환 역시 쉽게 할 수 있다.
'백준' 카테고리의 다른 글
[백준] 11720번 : 숫자의 합 - Java (0) | 2025.01.05 |
---|---|
[백준] 5597번 : 과제 안 내신 분..? - Java (0) | 2025.01.05 |
[백준] 2675번 : 문자열 반복 - Java (0) | 2025.01.05 |
[백준] 11718번 : 그대로 출력하기 - Java (0) | 2025.01.05 |
[백준] 15552번 : 빠른 A+B - Java (0) | 2025.01.04 |