String #2. 대소문자 변환

인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 수강 중

문제:

문자열 하나를 입력 받고, 대문자는 소문자로, 소문자는 대문자로 변환

내 코드:

public class Problem2 {
  public String solution(String str){
    String ans = "";
    
    for(char c : str.toCharArray()){  //향상된 for문
    	if(Character.isUpperCase(c)) {  //대문자리면
    		ans += Character.toLowerCase(c);  //소문자로 변환
    	}
    	else {  //소문자라면
    		ans += Character.toUpperCase(c);  //대문자로 변환
    	}
    }
	    
	return ans;
  }
  
  public static void main(String[] args) {
    Problem2 pb2 = new Problem2();
    Scanner in = new Scanner(System.in);
    String inString = in.next();
    System.out.print(pb2.solution(inString));
      
    return ;
  }
}

향상된 for문을 사용했고 Character 라이브러리의 메서드를 이용해 대소문자를 확인/변환해주었다.

다른 방법

인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비  참조

for(char c : str.toCharArray()){
  if(c >= 65 && c <= 90) {  //대문자라면
    ans += (char)(c + 32);  //소문자로 변환
  }
  else {  //소문자라면
    ans += (char)(c - 32);  //대문자로 변환
  }
}

아스키 코드에서 알파벳은 10진수로 다음과 같기 때문에

  • ‘A’ ~ ‘Z’: 65 ~ 90
  • ‘a’ ~ ‘z’: 97 ~ 122

대문자 범위에 있을 경우 소문자로 변환한다. 대문자와 소문자는 10진수로 32 차이가 나기 때문에 32를 더해준다.

개선된 점:

  • 문제 없이 잘 풀었다
  • 아스키 코드를 이용한 구현도 가능하다

끝!