Bleeding edge

[프로그래머스] JadenCase 문자열 만들기 - 자바스크립트 본문

코딩테스트 공부

[프로그래머스] JadenCase 문자열 만들기 - 자바스크립트

codevil 2022. 5. 10. 19:33

https://programmers.co.kr/learn/courses/30/lessons/12951

 

코딩테스트 연습 - JadenCase 문자열 만들기

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고

programmers.co.kr

function solution(s) {
    s=s.toLowerCase();
    s = s.split(' ')
    for(let i =0;i<s.length;i++){
        let up = s[i][0].toUpperCase();
        s[i] = [up, ...s[i].slice(1)].join('');
    }
    s= s.join(' ')
    return s
}

1회차 풀이 때는, 테스트 케이스는 통과했지만, 최종 케이스에서 절반정도 틀렸다. 생각을 해봤는데, 이 문제를 굳이 나누고 처음 글자를 uppercase하는 것 보다는, " " 빈 string이 나온 후에는 toUpperCase를 하는 것이 더 효율적이라는 생각이 들어서.

1. 첫글자를 let answer에 대입 (i -1을 사용할꺼기 때문에)

2. answer에 대입할 chr은 모두 소문자로

3. 단, chr의 앞에 들어갈 글자가 " "라면, to upper case로 바꿀것

로 심플하게 풀었다, 여기서 콘솔로 한가지 확인한 케이스는 단 하나였다, 만일 숫자를 toUppercase시키면 어떤 경우가 나오는가이다. 숫자에는 대문자가 없어서 그런가 그냥 문제 없이 출력됬다.

아래는 풀이이다.

function solution(s) {
    let answer = s[0].toUpperCase()
    for(let i =1;i<s.length;i++){
    // s[i]
    let chr = s[i].toLowerCase()
    if(s[i-1]===" "||0){
        chr = s[i].toUpperCase()
    }
        answer = answer + chr
    }
    return answer
}