JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
쉽다고 생각하고 작성한 코드가 예상치 못하게 런타임 에러가 떴다.
function solution(s) {
s = s.split(" ")
let answer = s.map((x) => x[0].toUpperCase() + x.slice(1).toLowerCase()).join(" ")
return answer;
}
뭐갸 문제인지 모르겠어서 🤔??? 이 상태로 서치해보다가 이 글을 봤다.
stackoverflow | string.charAt(x) or string[x]?
짧은 영어실력이라(+번역기 도움) 정확한 건 아니지만 일단
라는 걸 알게 됐다.
"가나다라"[2.17] // undefined
"가나다라".charAt(2.17) // "다" | 반올림 적용
"가나다라"[true] // undefined
"가나다라".charAt(true) // "나" | true -> 1
"가나다라"["마바사"] // undefined
"가나다라".charAt("마바사") // "가" | NaN -> 0
string[x]로 접근했던 걸 charAt(x)로만 바꿔주니 통과했다!
사실 귀찮기도 하고 바로 [index]로 접근하는게 이미 익숙해서 저렇게 코드를 짰는데 앞으론 charAt()을 이용해 인덱스로 접근할 수 있도록 연습해야겠다.
function solution(s) {
s = s.split(" ")
let answer = s.map((x) => x.charAt(0).toUpperCase() + x.slice(1).toLowerCase()).join(" ")
return answer;
}
✔문제출처: 프로그래머스