programmers - JadenCase 문자열 만들기

marafo·2020년 10월 10일
post-thumbnail

문제 설명

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.

제한 조건

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


function solution(s){
    let str = s.split('');
    let answer;
    
    function firstSpace(arr){
        for( let i = 0; i < arr.length; i++){
            if(arr[i] === ' '){
                return i;
            }
        }
    }
    
    if(str[0] === str[0].toLowerCase()){
        str[0] = str[0].toUpperCase();
    }
        
    let space = firstSpace(str);
    let i = space;
    let j = 1;
    
    while(j < i){
        if( str [j - 1] !== ' ' && str[j] === str[j].toUpperCase()){
            str[j] = str[j].toLowerCase();
        }
        j++;
    }
    
    while(i + 1 < str.length){
        if(str[i] === ' '){
            str[i + 1] = str[i + 1].toUpperCase();
        }
        
        if(str[i - 1] !== ' ' && str[i] === str[i].toUpperCase() ){
            str[i] = str[i].toLowerCase();
        }
        i++;
    }
    answer = str.join('');
    
    return answer;
}

정확성 부족.

function solution(s) { 
    s = s.toLowerCase(); 
    let answer = s.split(" ").map(s => { 
        let arr = s.split("");
        if(arr[0] != null) {
          arr[0] = arr[0].toUpperCase(); 
        }
        return arr.join(''); 
    }).join(' '); 
  
    return answer; 
}

우선 모든 문자열 소문자 변환 ->
split(' ')을 통해 공백을 기준으로 문자열 분리해서 배열에 넣기->
분리된 문자열을 spilt('')을 통해 문자 단위로 또 쪼갬 ->
문자 단위로 만든 배열의 첫 번째 원소(arr[0])을 대문자로 변환 ->
split의 역프로세스로 join을 이용해 처음 문자열 형태로 회귀

가끔은 조금 단순히 생각해도 될 것.

+) python version

def solution(s):
    answer = ''
    # s = s.lower()  일괄적으로 모두 소문자 통일, 없어도 무관
    L = s.split(" ") # 단어를 공백 간격 단위로 잘라서 배열 생성
    
    for i in L:
        i = i.capitalize() # 단어 첫 글자만 Big, 나머지 글자 Small, 문자열만 되고 배열은 반복문 없으면 사용불가
        answer += i + " " # 본래 공백 간격 맞추기
    
    return answer[:-1]

참고) https://jo-c.tistory.com/40?category=856735
https://ian90.tistory.com/46
https://velog.io/@terry960302/알고리즘-풀이-프로그래머스-LV2-JadenCase-문자열-만들기-e8jwm1dqw0

profile
프론트 개발자 준비

0개의 댓글