그간 긴 연휴동안 너무 잘 쉬었기에, 다시 달려보고자 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;
}
이렇게 하여 문제를 다시 재출해보니,
성공적으로 통과되었다.