본문 바로가기
CodingTest/Programmers

[프로그래머스] Lv.0 대문자와 소문자*

by yoondoo 2022. 11. 28.
728x90
class Solution {
    public String solution(String my_string) {
        String answer = "";
        
        for(int i=0; i<my_string.length(); i++){
            if(Character.isLowerCase(my_string.charAt(i)))
               answer+=Character.toUpperCase(my_string.charAt(i));
            else answer+=Character.toLowerCase(my_string.charAt(i));
        }
        
        return answer;
    }
}

대문자를 소문자로 소문자를 대문자로 바꾸기 위해서 isLowerCase()메서드를 이용해

소문자면 true가 반환되서 해당 문자를 toUpperCase()메서드로 대문자로 변환한 뒤 answer문자열에 붙여주고

반대로 false가 반환되면 대문자이므로 toLowerCase()메서드로 소문자로 변환한 뒤 answer문자열에 붙여준다.

 

위와 같은 메소드를 사용하지 않고 아스키코드 값을 이용해서 문제를 풀 수도 있다.

 

char변수는 실제 문자가 아닌 해당 문자의 '정수'를 가지고 있기 때문에 그 성질을 이용해서

소문자 'a'는 97, 대문자 'A'는 65 인 것을 이용해서 문제를 풀어보자

 

class Solution {
    public String solution(String my_string) {
        String answer = "";
        
        for(int i=0; i<my_string.length(); i++){
            if(my_string.charAt(i)>=97)                  //97보다 크면 'a'소문자
               answer+=(char)(my_string.charAt(i)-32);  //대문자 'A'는 65여서 32를 빼준다.
            else
               answer+=(char)(my_string.charAt(i)+32);  //대문자가 입력된거라 32를 더해서 소문자로
        }                                               //변환해준다.
        
        return answer;
    }
}

대신 32를 더하고 빼준 후 (char)으로 형변환 해주는 것 잊지말자!!!

반응형

댓글