이상한 문자 만들기 | 프로그래머스

Bluewave·2024년 9월 6일

코테공부_java

목록 보기
64/99
post-thumbnail

문제

💌 문제 바로가기

문제레벨정답률
이상한 문자 만들기Lv.176%

My Code

class Solution {
    public String solution(String s) {       
        String result = "";
        int j = 1;

        for(int i = 0; i<s.length(); i++){
            char c = s.charAt(i);
            
            //공백이 오면 j를 reset
            if(c == ' '){
                j = 1;
                result += " ";
                continue;
            }
            
            if(j % 2 == 1 && c >= 'a' && c<='z'){
                c = Character.toUpperCase(c);
            } else if(j % 2 == 0 && c >= 'A' && c<='Z'){
                c = Character.toLowerCase(c);
            }
            
            result += c;
            j++;
        }
        
        return result;
    }
}

어제 데일리 실습을 푸는데 문자열은 아스키코드로 쉽게 더하고 뺄 수 있고, 소문자 대문자 체크 역시 아스키코드로 할 수 있다는 걸 알고 한 번 더 풀어봤다.

참고로 isLowerCase(), isUpperCase()로 하게 되면 제대로 판별되지 않는 경우도 있으니 그냥 아스키로 비교하는게 예외를 생각하지 않아도 되어 좋은 것 같다..!

🎨 제대로 판별되지 않는 이유

isLowerCase(), isUpperCase()의 경유 유니코드를 기반으로, 아스키는 아스키 값을 기반으로 하기 때문!
따라서 앞의 두 메서드는 소문자, 대문자를 비롯해 다른 언어도 포함하게 되므로 원하는 대로 판별이 안될 수 있음

profile
Developer's Logbook

0개의 댓글