Programmers | JadenCase 문자열 만들기(Lv.2 / JS)

HN·2023년 4월 11일
0

프로그래머스

목록 보기
1/30
post-custom-banner

JadenCase 문자열 만들기

❔문제 설명

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.

제한조건

  • s는 길이 1 이상 200 이하인 문자열입니다.
  • s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
    • 숫자는 단어의 첫 문자로만 나옵니다.
    • 숫자로만 이루어진 단어는 없습니다.
    • 공백문자가 연속해서 나올 수 있습니다.





풀이

첫 번째 시도

쉽다고 생각하고 작성한 코드가 예상치 못하게 런타임 에러가 떴다.

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]?

짧은 영어실력이라(+번역기 도움) 정확한 건 아니지만 일단

  1. string.charAt(x)는 모든 브라우저에서 작동하지만 string[x]는 IE7 이하에서는 지원하지 않음.
  2. string[x]에 정수가 아닌 소수, Boolean 등을 입력할 시 undefined가 뜨지만 string.charAt(x)은 입력된 매개변수를 적절한 정수로 변환하여 해당값을 리턴한다.

라는 걸 알게 됐다.

ex

"가나다라"[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;
}










✔문제출처: 프로그래머스

post-custom-banner

0개의 댓글