본문 바로가기
코딩테스트/프로그래머스 Lv.0

[문제] 대문자와 소문자

by moca7 2024. 10. 10.

 

 

ㅁ 문제

 

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

 

 

 

ㅁ 제한사항

 

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

 

 

ㅁ 입출력 예

 

 

 

 

 

ㅁ 풀이

 

 

class Solution {
    public String solution(String my_string) {

        char[] cc = my_string.toCharArray();
        
        for(int i=0; i<cc.length; i++){
            if(cc[i] >= 'a' && cc[i] <= 'z'){
                cc[i] -= 32;
            }else if(cc[i] >= 'A' && cc[i] <= 'Z'){
                cc[i] += 32;
            }
        }
        
        return new String(cc);
        
        
        
    }
}

 

 

- new String(char[]) 생성자를 사용해서 char[] 배열을 String으로 변환할 수 있다.

 

 

 

 

ㅁ 다른 풀이 (char[]배열 미사용)

 

 

class Solution {
    public String solution(String my_string) {

        String answer = "";
        
        for(int i=0; i<my_string.length(); i++){
            if(my_string.charAt(i) >= 'a' && my_string.charAt(i) <= 'z'){
                answer += (char) (my_string.charAt(i) - 32);
            }else if(my_string.charAt(i) >= 'A' && my_string.charAt(i) <= 'Z'){
                answer += (char) (my_string.charAt(i) + 32);
            }else{
                answer += my_string.charAt(i);
            }
        }
        
        return answer;
        
        
        
    }
}

 

 

- charAt() 메서드는 문자열에서 특정 문자를 반환할 수 있지만, 문자열 자체를 수정할 수는 없습니다.

문자열은 불변 객체(immutable)이기 때문에, charAt()을 통해 반환된 문자를 직접 수정할 수 없습니다.

 

- my_string.charAt(i)에 -또는 +32를 하고 (char)로 다시 형변환해줘야 한다.

my_string.charAt(i)는 문자를 반환하지만, 산술 연산(- 32 또는 + 32)을 하면 정수 값이 된다. 

정수 값을 문자로 변환하려면 (char)로 캐스팅해야 합니다.