Algorithm/Java

프로그래머스 - JadenCase 문자열 만들기 java :: 12951

고고마코드 2022. 7. 12. 10:26
반응형

문제 링크

코딩테스트 연습 - JadenCase 문자열 만들기 | 프로그래머스 스쿨 (programmers.co.kr)


문제 풀이

1번 풀이

  • 모든 문자를 직접 순회하며 조건에 맞게 대/소문자 치환
public String solution(String s) {        
    StringBuilder sb = new StringBuilder();
    boolean flag = true;
    for(char ch : s.toCharArray()) {            
        sb.append(flag ? Character.toUpperCase(ch) : Character.toLowerCase(ch));
        flag = (ch == ' ') ? true : false;
    }

    return sb.toString();
}

대문자가 되는 기준은 첫문자공백의 다음 문자입니다.

해당 기준은 (ch == ' ') 조건으로 쉽게 구분할 수 있습니다.


테스트 처리속도

  • 🔥 0.04ms ~ 0.10ms

2번 풀이

  • 모든 문자를 소문자로 바꾼 후 정규식을 통해 조건에 맞는 문자만 대문자로 치환
public String solution(String s) {
    s = s.toLowerCase();
    s = Pattern.compile("(((^)|(?<= ))[a-z]{1})")
            .matcher(s)
            .replaceAll(matche -> matche.group().toUpperCase());

    return s;
}
  • (^)
    문자열의 시작점
  • (?<= )
    후방탐색 (공백이 있으므로 공백 다음 문자열을 탐색)
    만약 (?<=#) 이면 # 다음 문자열을 탐색
  • [a-z]{1}
    첫 번째 문자가 알파벳 a-z인 경우
  • 정규식 해석
    • ((^)|(?<= ))[a-z]{1}
      문자열의 시작점 또는 공백 이후 문자열 1개가 a~z인 경우

테스트 처리속도

  • 🔥 0.56ms ~ 0.80ms

반응형