Contents

대문자와 소문자 (with.Java)

   Feb 23, 2024     1 min read

“대문자와 소문자” 문제에 대하여 알아본 글입니다.

코딩 테스트 문제를 풀며, 풀었던 문제에 대한 회고와 다른 풀이 방법을 알아보며, 알아가고자 합니다.

문제에 대해 먼저 알아보겠습니다.

문제

문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ my_string의 길이 ≤ 1,000
  • my_string은 영어 대문자와 소문자로만 구성되어 있습니다.

입출력 예시

my_stringresult
“cccCCC”“CCCccc”
“abCdEfghIJ”“ABcDeFGHij”

문제에 대한 나의 풀이

class Solution {
    public String solution(String my_string) {
        StringBuilder answer = new StringBuilder();
        char[] chArr = my_string.toCharArray();
        for(char ch : chArr){
            String str = Character.toString(ch);
            if(ch >= 65 && 90 >= ch){
                answer.append(str.toLowerCase());
            }else{
                answer.append(str.toUpperCase());
            }
        }
        return answer.toString();
    }
}

풀이 설명

이 코드는 주어진 문자열 내의 모든 대문자를 소문자로, 소문자를 대문자로 변환하는 기능을 하는 메서드입니다.

이를 위해 StringBuilder 객체를 생성하고 문자열을 char 배열로 변환하여 반복문을 돌립니다.

각 문자에 대해 아스키 코드 값을 기반으로 판단하며, 아스키 코드에서 65 ~ 90은 대문자 A ~ Z를 나타냅니다. 따라서 이 범위에 해당하는 문자는 소문자로 변환하고, 그렇지 않은 문자(즉, 소문자)는 대문자로 변환합니다.

이렇게 char형을 사용하는 이유는 아스키 코드를 이용해서 문자의 대소문자를 판별하기에 적합하기 때문입니다.

char형은 숫자로 변환할 수 있으니 이런 식으로 아스키 코드를 활용할 수 있습니다.

반면에 String 형은 문자열 전체에 대한 값이므로 아스키 코드를 직접적으로 활용하는 것이 불가능합니다.

그리고 toUpperCase나 toLowerCase 같은 메서드는 String 클래스의 메서드이기 때문에 String 객체에서만 사용 가능합니다.

char형에는 이와 같은 메서드가 없기 때문에, 대소문자 변환을 위해 ch형을 String형으로 변환한 후 사용합니다.

이 변환은 Character.toString(ch)를 통해 이루어집니다.