[JAVA-알고리즘 문제풀이] 대소문자 변환
- Algorithm/Problem Solving
- 2022. 9. 6.
반응형
728x90
반응형
문제
대문자와 소문자가 같이 존재하는 문자열을 입력받는다.
문자열에서 대문자는 소문자로, 소문자는 대문자로 변환하여 결과를 출력한다.
풀이 1. String 객체를 for문 사용해서 변환하기
import java.util.Scanner;
public class LC2_대소문자_변환 {
static String target;
public static void main(String[] args) {
// write your code here
LC2_대소문자_변환 main = new LC2_대소문자_변환();
main.solution();
}
public void solution() {
input();
StringBuilder result = new StringBuilder();
// CASE 1
for (int i = 0; i < target.length(); i++) {
char c = target.charAt(i);
if (Character.isUpperCase(c)) {
result.append(Character.toLowerCase(c));
} else {
result.append(Character.toUpperCase(c));
}
}
System.out.println(result);
}
private void input() {
Scanner sc = new Scanner(System.in);
target = sc.next();
}
}
1) 대문자인지 판단
if (Character.isUpperCase(c)) {
2) 대문자, 소문자로 변환
result.append(Character.toLowerCase(c)); -- 소문자
result.append(Character.toUpperCase(c)); -- 대문자
풀이 2. String 객체를 char 타입의 배열로 변환하여 for문 사용하기
import java.util.Scanner;
public class LC2_대소문자_변환 {
static String target;
public static void main(String[] args) {
// write your code here
LC2_대소문자_변환 main = new LC2_대소문자_변환();
main.solution();
}
public void solution() {
input();
StringBuilder result = new StringBuilder();
// CASE 2
for (char c : target.toCharArray()) {
if (Character.isUpperCase(c)) {
result.append(Character.toLowerCase(c));
} else {
result.append(Character.toUpperCase(c));
}
}
System.out.println(result);
}
private void input() {
Scanner sc = new Scanner(System.in);
target = sc.next();
}
}
1) Stirng 객체를 char 타입의 배열로 변환
for (char c : target.toCharArray()) {
풀이 3. 아스키코드 사용하기
import java.util.Scanner;
public class LC2_대소문자_변환 {
static String target;
public static void main(String[] args) {
// write your code here
LC2_대소문자_변환 main = new LC2_대소문자_변환();
main.solution();
}
public void solution() {
input();
StringBuilder result = new StringBuilder();
// CASE 3
for (char c : target.toCharArray()) {
if (c >= 97 && c <= 122) { // char 은 >=을 쓰면 정수로 판단된다. (char은 원래 정수형)
result.append((char) (c - 32)); // 대문자로
} else {
result.append((char) (c + 32));
}
}
System.out.println(result);
}
private void input() {
Scanner sc = new Scanner(System.in);
target = sc.next();
}
}
1) 소문자/대문자 판단
if (c >= 97 && c <= 122) {
구분 | 범위 | 차이 |
대문자 | 65 ~ 90 | 32 |
소문자 | 97 ~ 122 |
위 표의 내용으로 인해, 소문자/대문자 판단과 소문자 -> 대문자, 대문자 -> 소문자의 코드는 아래와 같다.
if (c >= 97 && c <= 122) { // char 은 >=을 쓰면 정수로 판단된다. (char은 원래 정수형)
result.append((char) (c - 32)); // 대문자로
} else {
result.append((char) (c + 32));
}
참고사항 1. String 전체를 소문자, 대문자로 변환하는 메서드
String target = "aaAAAAbb";
System.out.println(target.toUpperCase()); // AAAAAABB
String target2 = "aaAAAAbb";
System.out.println(target2.toLowerCase()); // aaaaaabb
참고사항 2. 두 문자열을 대문자/소문자 구분없이 비교해야할때
equalsIgnoreCase
String target = "AAAAAABB";
String target2 = "aaaaaabb";
System.out.println(target.equalsIgnoreCase(target2)); // true
반응형
'Algorithm > Problem Solving' 카테고리의 다른 글
[JAVA-알고리즘 문제풀이] 가장 짧은 문자 거리 (0) | 2023.03.01 |
---|---|
[JAVA-알고리즘 문제풀이] 중복 문자 제거 (0) | 2022.11.21 |
[Baekjoon 7568번] 덩치 문제 (with 자바) (0) | 2022.07.31 |
[Baekjoon 18406번] 럭키 스트레이트 문제 (with 자바) (0) | 2022.07.05 |
[Baekjoon 10816번] 숫자 카드 2 문제 (with 자바) (0) | 2022.05.30 |