[JAVA-알고리즘 문제풀이] 대소문자 변환

반응형
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

 

반응형

Designed by JB FACTORY