문제정보
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()를 적용하게되어 오류가 발생하는 것이었습니다.
반응형
'programmers' 카테고리의 다른 글
[Programmers Level 0] 잘라서 배열로 저장하기 Javascript (0) | 2022.11.28 |
---|---|
[Programmers Level 0] 한번만 등장한 문자 Javascript (0) | 2022.11.25 |
[Programmers Level 1] 약수의 개수와 덧셈 Javascript (0) | 2022.11.25 |
[Programmers Level 1] 문자열 내림차순으로 정렬하기 Javascript (0) | 2022.11.25 |
[Programmers Level 0] 가까운수 Javascript (0) | 2022.11.25 |