programmers

[Programmers Level 2] JadenCase 문자열 만들기 Javascript

냠냠맨 2022. 11. 25. 16:28

문제정보

 

 

 

JadenCase를 만드는 문제입니다.

쉽게 해결할 수 있을 것 같았는데 막히는 부분이 있어서

구글링의 도움을 살짝 받았습니다.


 

예시

 

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

맨 처음 실수한 것이

모든 문자열이 소문자로 주어지지않는다는 것을 간과했습니다.

이걸 해결하기위해서 모든 문자열을 일단 lowercase로 만들어줄 필요가 있었습니다.


나의풀이

function solution(s) {
    return s
    .split(" ")
    .map((ele) => ele.charAt(0).toUpperCase() + ele.slice(1,ele.length).toLowerCase())
    .join(" ")
}

사실 처음 코드는 이게 아니었습니다.

ele.charAt(0)이 아니라 ele[0]으로 접근해서 문제를 풀었는데

이렇게 푸니까 통과되지않는 케이스가 있었습니다.

 

제 머리론 도저히 이유를 모르겠어서 구글링을 통해 charAt()을 사용해 통과했습니다.


다른사람의 풀이

function solution(s) {
    return s.split(" ").map(v => v.charAt(0).toUpperCase() + v.substring(1).toLowerCase()).join(" ");
}

 

코멘트를 보니까

공백 문자가 연속으로 나올 수 있는 점이 오류를 만드는 원인이었습니다.

공백문자가 연속으로 나오는 상황에서 split(" ")을 하면

빈 ''" 요소를 가진 배열이 생기게됩니다. 

 

이 빈 요소에 인덱스로 접근할경우 undefined가 반환되고

undefined에 toUpperCase()를 적용하게되어 오류가 발생하는 것이었습니다.

 

 

 

 

반응형