프로그래머스/Lv. 0(코딩테스트 입문)

[프로그래머스 코딩테스트] 대문자와 소문자(Java)

Sigfriede 2023. 4. 2. 02:06

  문제 설명

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

 

  제한사항

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

 

  입출력 예

my_string result
"cccCCC" "CCCccc"
"abCdEfghlJ" "ABcDeFGHiJ"
class Solution {
    public String solution(String my_string) {
        String answer = "";
        for (char c: my_string.toCharArray()) {
            if (c >= 97 && c <= 122) {
                answer += (char)(c - 32);
            } else if (c >= 65 && c <= 90) {
                answer += (char)(c + 32);
            }
        }
        return answer;
    }
}

  이 문제는 아스키 코드를 사용하여 풀었습니다. 아스키 코드에서 영어의 대문자는 65~90, 소문자는 97~122 입니다. 영어의 대문자와 소문자 간의 간격은 32로, 각각 32를 더하거나 빼면 대문자와 소문자를 정확히 바꿀 수 있는 것입니다. 따라서 if문을 통한 조건식으로 값을 반환하였습니다.

  아스키 코드를 사용하기 위해서 값을 할당하기 전에 char형으로 캐스팅을 해주었습니다. 반대로 문자의 아스키 코드를 얻기 위함이라면 int로 캐스팅하여 원하는 아스키 코드의 숫자값을 얻을 수 있을 것입니다.

  만약 아스키 코드가 기억나지 않는다면 조건식에서 (c >= 97 && c <= 122) 대신 (c >= 'a' && c <= 'z')로 써도 문제를 푸는 데에는 무방합니다.