프로그래머스 - JadenCase 문자열

JSA·2024년 7월 30일

코딩테스트

목록 보기
16/16

[level 2] JadenCase 문자열 만들기

코딩테스트 연습 > 연습문제

문제

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 조건
s는 길이 1 이상 200 이하인 문자열입니다.
s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
숫자는 단어의 첫 문자로만 나옵니다.
숫자로만 이루어진 단어는 없습니다.
공백문자가 연속해서 나올 수 있습니다.

입출력 예
| s | return |
|--------------------------|----------------------------|
| "3people unFollowed me" | "3people Unfollowed Me" |
| "for the last week" | "For The Last Week" |

풀이

import java.util.*;
class Solution {
        public String solution(String s) {
            StringBuilder sb = new StringBuilder();
            String[] arr = s.split(" ");
            for(int i=0; i<arr.length; i++) {
                String str = arr[i];
                if (str.isEmpty()) {
                    sb.append(" ");
                }else{
                    sb.append(Character.toUpperCase(str.charAt(0)));
                    sb.append(str.toLowerCase().substring(1));
                    sb.append(" ");
                }
            }
            String string = sb.toString();
            if(s.endsWith(" ")) return string;
            return string.substring(0, string.length() - 1);
     }
}

흠... 어려운 것 같지는 않았던 것 같은 문제였는데 테스트 케이스에서 자꾸 걸리더군요 그래서 계속 해봤는데 마지막엔 한 문제만 안풀려 대체 뭘까?를 계속 생각해봤습니다.
마지막 공백이였어요..... 마지막 공백은 보이지도 않기 때문에 참.... 알아차리기 쉽지 않았어여;;
아무튼 이 하나에 께속 매달려서 고치면 정답률이 더 낮아지고 참 머리가 많이 꼬였는데 결국 풀어냈습니다.^^

요 8번이 저를 괴롭혔습니다.

다른 사람의 풀이


import java.util.regex.*;

class Solution {
    public String solution(String s) {
        Matcher m = Pattern.compile("\\b([\\w])([\\w]*)").matcher(s);
        while (m.find()) {
            s = s.replaceAll("\\b" + m.group(), m.group(1).toUpperCase() + m.group(2).toLowerCase());
        }
        return s;
    }
}

이걸 보고 코드길이 차이가 참 비교되네요....
그리고 보니 MAtcher 나 Pattern .compile() 등 정규 표현식을 위한 기능들이 꽤 있다는 것도 알았습니다. 정규표현식이 아직 쓸일이 없어 잘 몰랐는데 리눅스 CLI 환경에서 꽤 쓰인다고 하네요. 나중에 정규표현식에 대해 공부하면 좀 더 쉬워지지 않을까 싶긴하네요 프로그래머스 문제.
이상입니다.

profile
ㅎㅇㅎㅇ

0개의 댓글