A 강조하기

nacSeo (낙서)·2024년 2월 20일
0

프로그래머스

목록 보기
93/169

문제 설명

문자열 myString이 주어집니다. myString에서 알파벳 "a"가 등장하면 전부 "A"로 변환하고, "A"가 아닌 모든 대문자 알파벳은 소문자 알파벳으로 변환하여 return 하는 solution 함수를 완성하세요.

제한사항

1 ≤ myString의 길이 ≤ 20
myString은 알파벳으로 이루어진 문자열입니다.

나의 코드

  • 첫 번째 코드
class Solution {
    public String solution(String myString) {
        StringBuilder result = new StringBuilder();
        for(int i = 0; i < myString.length(); i++) {
            char c = myString.charAt(i);            
            if(c == 'a') {
                result.append('A');
            } else if (Character.isUpperCase(c)) {
                result.append(Character.toLowerCase(c));
            } else {
                result.append(c);
            }
        }
        return result.toString();
    }
}

StringBuilder를 사용해서 해결해보려 했으나, 코드 실행만 통과하고 제출 후 채점하기에서 테스트 1개 실패.. 뭐가 잘못됐을까 🤔

  • 두 번째 코드
class Solution {
    public String solution(String myString) {
        char[] result = new char[myString.length()];
        for(int i=0; i<result.length; i++) {
            char c = myString.charAt(i);
            if(c=='a') {
                result[i] = 'A';
            } else if(Character.isUpperCase(c)) {
                result[i] = Character.toLowerCase(c);
            } else {
                result[i] = c;
            }
        }
        return new String(result);
    }
}


이번엔 char 배열을 통해 해결해보려고 했으나 또 같은 테스트 실패가 발생한다... 🤯

  • 최종 코드
class Solution {
    public String solution(String myString) {
        myString = myString.toLowerCase();
        myString = myString.replace("a", "A");
        return myString;
    }
}

와.......... 이렇게 간단했다고?

느낀 점

문자열들의 각각의 문자마다 돌면서 바꾼다는 거에 초점을 가지고 접근하니 자꾸 어려운 코드가 되고 풀 수 없었다... 단순하게 생각하여 toLowerCase() 메소드를 통해 우선 소문자로 다 바꿔버린 후, replace() 메소드를 이용해 aA로 바꿔주면 끝.......... 내 멘탈 ㅠㅠㅠㅠ

+) replace()에 관해 내가 예전에 써둔 글을 참고하면 좋겠다.
https://velog.io/@nacseo/replace-vs.-replaceAll

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글