Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

[프로그래머스] JadenCase 문자열 만들기 본문

코테준비

[프로그래머스] JadenCase 문자열 만들기

Seung__ 2021. 12. 20. 21:25

1. 문제


JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때,

s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.

 

제한 조건

  • s는 길이 1 이상인 문자열입니다.
  • s는 알파벳과 공백문자(" ")로 이루어져 있습니다.
  • 첫 문자가 영문이 아닐때에는 이어지는 영문은 소문자로 씁니다. ( 첫번째 입출력 예 참고 )

입출력 예

s return
"3people unFollowed me" "3people Unfollowed Me"
"for the last week" "For The Last Week"

 

2. 문제 정리


  • 각 단어의 첫 알파벳는 대문자, 나머지는 소문자
  • 문자열 처음에 공백이 올 수 있음.
  • split()을 사용하여 공백을 기준으로 나눠보자.
  • split(기준 문자)를 사용하면 특정 문자(공백 가능)를 기준으로 문자열을 분리할 수 있다.
  • 예를들어 "3people unFollowed me"를 " "를 기준으로 split하면 {"3people", "unFollowed", "me"}가 된다.
    • "3people/unFollowed/me"
  • 하지만 기준문자라 연속해서 여러 개 가 된다면..?
  • 예를들어 "(공백)(공백)1Abc(공백)def"를 (공백)으로 나눠보자. 보기 변하게 편의상 " "을 (공백)으로 대체함.
    • """/""/1Abc/def" 와 같이 분리된다.
    • 즉 {"", "", Abc, def"}

 

3. 코드


import java.util.*;

class Solution {
    public String solution(String s) {
        StringBuilder builder = new StringBuilder();
        
        //s = "  1Abc def";
        s = s.toLowerCase();
        
        String[] splited = s.split(" ");
 
        for(int i=0; i< splited.length; i++){
            if(splited[i].isEmpty()){
                builder.append(" ");
            }else{
                builder.append(splited[i].substring(0, 1).toUpperCase());
                builder.append(splited[i].substring(1, splited[i].length()) + " ");                          
            }
          
        }
        
        //마지막에 추가된 공백 제외하기 위해.
        return builder.toString().substring(0, s.length());
    }
}

 

4. GitHub : 211220 JadenCase


 

GitHub - bsh6463/coding_test

Contribute to bsh6463/coding_test development by creating an account on GitHub.

github.com

 

Comments