본문 바로가기
algorithm/Programmers

[JAVA] 대문자와 소문자(대문자, 소문자 변환)

by 이쟝 2023. 2. 10.

문제 설명

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


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

입출력 예my_stringresult
"cccCCC" "CCCccc"
"abCdEfghIJ" "ABcDeFGHij"

입출력 예 설명

입출력 예 #1

  • 소문자는 대문자로 대문자는 소문자로 바꾼 "CCCccc"를 return합니다.

입출력 예 #2

  • 소문자는 대문자로 대문자는 소문자로 바꾼 "ABcDeFGHij"를 return합니다.

String형일 때 바꾸는 함수

대문자 일때 .toLowerCase( ) / 소문자 일때 .toUpperCase( )

Char형일 때 바꾸는 함수

대문자일 때 Character.toLowerCase(변환을 원하는 단어) 소문자일 때 Character.toUpperCase(변환을 원하는 단어)

대문자 아스키코드 65 - 90
소문자 아스키코드 97 - 122


1. 내가 푼 코드 StringBuilder. forEach

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

if문을 삼항연산자로 변경해보기

answer.append(65 <= ch-0 && ch-0 <= 90 ? Character.toLowerCase(ch) : Character.toUpperCase(ch));

Character.말고 String.으로 사용해보기(저번에 사용해 봤던 valueOf을 이용해서)

answer.append(65 <= ch-0 && ch-0 <= 90 ? String.valueOf(ch).toLowerCase() : String.valueOf(ch).toUpperCase());

2. 다른 사람 풀이

class Solution {
    public String solution(String my_string) {
        StringBuilder answer = new StringBuilder();
        for(char c : my_string.toCharArray()){
            answer.append(c >= 'a' && c <= 'z' ? (char)(c - 'a' + 'A') : (char)(c - 'A' + 'a'));
        }
        return answer.toString();
    }
}

아스키 코드 말고 문자에서 'a'를 빼고 + 'A'를 해도 되는 거..! 아주 유용한 것 같다...! 

문자도 범위를 줄 수 있다는거 잊지 말기 ( 'a' <= ch && ch <= 'z' ) 

'algorithm > Programmers' 카테고리의 다른 글

[JAVA] 인덱스 바꾸기  (0) 2023.03.03
[JAVA] 컨트롤 제트  (0) 2023.03.02
[JAVA] 369 게임  (0) 2023.02.09
[Java] 중복된 문자 제거  (0) 2023.01.27
[JAVA] 모음 제거  (0) 2023.01.24