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

ckxo·2022년 10월 4일
0

programmers

목록 보기
5/29

문제 설명

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

제한 조건

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

입출력 예

코드

function solution(s) {
    var answer = '';
    var re = '';
    re=s.toLowerCase();
    re=re.split(' ');
    
    for(let i=0; i<re.length; i++){
        answer+=re[i].charAt(0).toUpperCase()+re[i].slice(1)+' ';
    }
    
    answer=answer.slice(0,answer.length-1);
    
    return answer;
}

풀이

해당 문제에선 아래 네가지를 사용하면 된다.

charAt()
toUpperCase()
toLowerCase()
slice()

원래 처음엔 s전체를 lower case로 만들어 준 후, i-1번째 문자가 빈칸이면 i번째 문자를 upper case로 변경해주는 걸 생각했다.

하지만 for문을 이용해 i번째 문자를 upper case로 변경해주는 과정에서 계속 변경이 되지 않아 다시 문제를 풀게 되었다.

우선, s전체를 lower case로 만들어준다.
이후 ' '빈칸을 기준으로 문자를 나누어 re에 넣어준다.
그리고 re[i]번째 문자의 첫 글자를 떼어내어 대문자로 바꾸어주고, 나머지 글자들을 그 뒤에 붙여 answer에 넣어준다.
그 뒤에는 빈칸을 붙여준다.

예를 들어 "for the last week"가 있다면,
re=["for", "the", "last", "week"]
re[0].charAt(0)=f
re[0].charAt(0).toUpperCase()=F
re[0].slice(1)=or
answer+=re[0].charAt(0).toUpperCase()+re[0].slice(1)+" ";

answer="For "

이걸 반복하여 진행해주면 첫 문자들은 대문자이고 나머지 문자들은 소문자가 되어 리턴된다.

그러나 마지막 단어까지 뒤에 빈칸을 붙여주기 때문에,
반복문이 종료된 후 결과값이 리턴되기 전, 마지막 원소를 제외한 나머지를 리턴해주도록 하면 된다.

0개의 댓글