[프로그래머스] JadenCase 문자열 만들기

butterbeetle·2023년 2월 5일
0

코딩테스트

목록 보기
67/132
post-thumbnail

문제설명

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

제한사항

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

입출력 예

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

내 풀이

처음에는 정규식으로 풀어보려고 했다.

function solution(s) {
    let answer = '';
    const arr = s.split(" ")
    const reg = /\b[a-z]/g
    arr.forEach(str=>{
        const newStr = str.replace(reg, (char=>char.toUpperCase()))
        answer = answer+" "+newStr 
    })
    return answer.trim()
}

그런데 테스트 케이스를 자세히 보니
unFollowed 처럼 중간에 대문자가 섞여있는 경우가 있었다.
또 제일 앞쪽에 의미없는 공백이 생겨버리고
만약 정답이 "A B C " 같이 뒤쪽에 공백이 있는경우 공백이 trim으로 인해서 없어져 버렸다.
그 결과 테스트8번을 통과 못하게 됐다.

그래서 앞 한글자만 따와서 대문자로 나머진 소문자로 바꾸도록 변경 하였다.

function solution(s) {
    return s.split(" ").map(str=>{
        return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()
    }).join(" ")
}
profile
멍청이

0개의 댓글