개발/알고리즘(코딩테스트)

프로그래머스, 자바스크립트) JadenCase 문자열 만들기

빔네모 2024. 11. 17. 23:54

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12951?language=javascript

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

풀이

일차 풀이. map을 돌면서 첫글자가 숫자라면 통과 문자라면, 첫 글자는 대문자, 첫 글자 외에 나머지 글자는 소문자처리

=> 런타임 에러... 다시 최적화 해보자

function solution(s) {
    let answer = s.split(" ").map((x) => {
        return isNaN(x[0]) 
            ? x[0].toUpperCase() + x.slice(1).toLowerCase() 
            : x;
    });
    return answer.join(" ");
}

" " 공백이 이렇게 한개만 있는게 아닌 "    " 이렇게 공백이 여러개인 문자열을 쪼갠 경우에는 런타임 에러에 걸릴 수 있다.

ex) "this is   the   nemo    world" => [ 'this', 'is',   '', '',     'the',  '', '',     'nemo', '', '',     '',     'world' ]

 

어차피 첫 글자는 대문자를 해줘야하니 숫자든 뭐든 x가 있다면 대문자 처리를 해준다. 숫자문자열이면 upperCase를 해도 1로 나옴

function solution(s) {
    return s
        .split(" ")
        .map(x => x 
                ? x[0].toUpperCase() + x.slice(1).toLowerCase() 
                : "" // 빈 문자열은 그대로 유지
        )
        .join(" ");
}