알고리즘/알고리즘 기초 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;
}
내가 작성한 코드가 좀더 알아보기 쉽다고 생각한다. 성능에 차이가 있으려나? 흠.