TIL - 22.12.28

자라나는 ㅇㅅㅇ개발자·2022년 12월 28일
0

TIL

목록 보기
42/126

오늘 알고리즘 문제를 풀던 중 문제로 문자열에서 대문자는 소문자, 소문자는 대문자로 변환하여 반환하라는 문제가 나왔다.

구글링을 해보고 toUpperCase와 toLowerCase가 있다는 것을 알고난뒤 문자열을 char[] 형태로 변환하고 for문안에 if문으로 대문자와 소문자를 바꾸는 것을 생각해봤는데 여기서 if문 안에 조건식 생각이 떠오르지 않았다.

조건식에 정규표현식을 사용해볼 생각도 해봤는데 ㅋㅋㅋ
다른 사람들의 코드를 참고해보니 내가 생각했을 때 의도에 가장 가까운 답은 조건식에 아스키 코드를 사용해서 비교하는 것인거같았고

if (my_string.charAt(i) >= 97 && my_string.charAt(i) <= 122) {
	answer += (char)(my_string.charAt(i) - 32);
}

더 찾아보던 도중 코드가 더 깔끔하고 직관적인 거 같아 보이는 것도 찾았는데 다음과 같다.

class Solution {
    public String solution(String my_string) {
        String answer = "";
        for (int i = 0; i < my_string.length(); i++) {
            if (Character.isUpperCase(my_string.charAt(i))) {
                answer += Character.toLowerCase(my_string.charAt(i));
            } else {
                answer += Character.toUpperCase(my_string.charAt(i));
            }
        }
        return answer;
    }
}

https://velog.io/@jsj3282/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%8C%80%EB%AC%B8%EC%9E%90%EC%99%80-%EC%86%8C%EB%AC%B8%EC%9E%90

Character라는 객체는 선언도 안했는데 어디서 튀어나온거지...? 싶었는데 알고보니 이게 래퍼(wrapper)클래스였다.
이걸 배웠을 때는 이해도 못해서 그냥 감싸주는 녀석 이정도로 알고 지나갔었는데 다시 한번 나의 과거를 반성해본다.

래퍼클래스는 char, short, int같이 기본형인 것들을 객체지향언어로 접근 하기 위해서 객체로 다루고 싶을 때 사용되는 녀석이고, 내가 위에서 본 Character는 char의 래퍼클래스 형태였다.

내가 종종 쓰던 Integer도 래퍼클래스였구낭....ㅎ헿
나는 오늘도 어제보다 박식해졌다.

0개의 댓글