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

Jun_Gyu·2023년 10월 9일
0

프로그래머스

목록 보기
13/14
post-thumbnail

그간 긴 연휴동안 너무 잘 쉬었기에, 다시 달려보고자 2레벨 난이도의 문제들 중 쉬운 문제들로 워밍업을 시작했다..!

위의 문제는 매개변수S로 들어온 문자열을 띄어쓰기를 기준으로 나누어 맨 앞글자만 대문자인Jaden Case로 문자를 변경하도록 하는 문제이다.

문제를 풀기 전 먼저 단계별로 간단하게 정리를 한 후 풀이에 돌입했다.

첫 풀이

const solution = (s) => {
    let answer = "";
    const jadenArr = s.split(" ");
    
    for(let i = 0; i<jadenArr.length; i++) {
        answer += (jadenArr[i].charAt(0).toUpperCase() + jadenArr[i].slice(1))
        if(i !== jadenArr.length - 1){
            answer += " "
        }
    }
    return answer;
}

처음 문제풀이에서는 위와 같이 풀이를 진행하였다.

먼저 매개변수 s로 받아온 문자열을 split메서드를 활용하여 빈칸을 기준으로 구분해줌과 동시에, jadenArr라는 이름의 배열에 값을 저장할 수 있도록 해주었다.

그 이후, for 반복문을 통해서 첫글자는 대문자로 바꿈과 동시에, answer라는 이름의 빈 문자열에 값을 차례대로 누적시키면서, 기존jadenArr의 마지막 배열 요소가 오기 전까지는

if 조건문을 활용해서 마지막 배열 요소 전까지 인위적으로 빈칸을 추가시켜
각 단어가 구분될 수 있도록 해주었다.
ex) Show Me The Money

그렇게 결과를 확인해보니..

엇;

무엇이 문제일까?

처음에는 테스트 케이스1을 보고
'뭐가 잘못된다는겨..' 라고 생각했지만,

자세히 보니 두번째 단어인 UnFollowed가 기대값과 다른것을 확인할 수 있었다.


한가지 간과한 점이 있었는데, 처음 매개변수로 들어오는 값들이 숫자인지, 대문자인지 알 수가 없다는 점이다.

그리하여 이 부분에 대해서는 강제로 맨 첫글자를 제외한 나머지의 모든 알파벳은 소문자가 될 수 있도록 코드를 약간 수정했다.

수정된 코드

const solution = (s) => {
    let answer = "";
    const jadenArr = s.split(" ");
    
    for(let i = 0; i<jadenArr.length; i++) {
		// toLowerCase 추가!
        answer += (jadenArr[i].charAt(0).toUpperCase() + jadenArr[i].slice(1).toLowerCase()) 
        if(i !== jadenArr.length - 1){
            answer += " "
        }
    }
    
    return answer;
}

이렇게 하여 문제를 다시 재출해보니,

성공적으로 통과되었다.

profile
시작은 미약하지만, 그 끝은 창대하리라

0개의 댓글