알고리즘/알고리즘 기초 100제

문제 5 - 대소문자 변환

가다파하 2020. 6. 30. 23:36
/**
 * 대문자는 소문자로, 소문자는 대문자로 변환하세요. helloWorlD -> HELLOwORLd 배열, for, if
 * 
 */
public class Study5 {

	public static void main(String[] args) {

		String compareValue = "helloWorlD";
		
		char[] arr = compareValue.toCharArray();
		
		for(int i=0; i< arr.length; i++) {
			
			if(arr[i] > 'a' && arr[i] <= 'z') {
				System.out.print(String.valueOf(arr[i]).toUpperCase());
			}else if(arr[i] > 'A' && arr[i] <= 'Z') {
				System.out.print(String.valueOf(arr[i]).toLowerCase());
			}
		}
		System.out.println();
		/* 강의 정답 */
		/*
		for(int i=0; i< arr.length; i++) {
			
			if(arr[i] > 'a' && arr[i] <= 'z') {
				arr[i] = (char)(arr[i] + 'A' - 'a'); // 대문자 A > 소문자 a.
			}else if(arr[i] > 'A' && arr[i] <= 'Z') {
				arr[i] = (char)(arr[i] - ('A' - 'a'));
			}
		}
		System.out.println(arr);
		*/
	}
}

음 A - a은 이해가 잘 안된다. 아스키 코드 값에 대한 이해도가 있어야 강의 정답을 이해 할 수 있을것 같다.

아스키 코드값은 필요할때마다 찾아보는 편인데, String 클래스가 제공하는 함수를 쓰는게 더 편하다고 생각한다. 

 

다른 사람의 풀이를 보면 아스키 코드값으로 변환을 한 경우도 볼수 있었는데,

 대문자의 경우 if(arr[i] >= 65 && arr[i] <= 90) { 

   arr[i] += 32;

 내가 작성한 코드가 좀더 알아보기 쉽다고 생각한다. 성능에 차이가 있으려나? 흠.