JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
❗제한 사항
◽s
는 길이 1이상 200이하인 문자열입니다.
◽s
는 알파벳과 숫자, 공백문자("")로 이루어져 있습니다.
◾ 숫자는 단어의 첫 문자로만 나옵니다.
◾ 숫자로만 이루어진 단어는 없습니다.
◾ 공백문자가 연속해서 나올 수 있습니다.
s | result |
---|---|
"3people unFollowed me" | "3people Unfollowed Me" |
"for the last week" | "For The Last Week" |
처음 주어진 문자열s
를 split()
함수로 " "기준으로 나누어 배열에 저장하고 각 배열 요소마다의 첫문자를 toUpperCase()
로 대문자로 만들고 뒤에 문자들을 slice
로 떼어와 toLowerCase()
로 소문자로 만들어 첫문자에 붙여놓았다.
function solution(s) {
var answer = '';
const data = s.split(' ') //' '기준으로 문자열 저장
answer = data.map((props) =>{
if(props === ""){ // 빈 공백이 연속될 때 그대로 저장
return props
}else {
return props[0].toUpperCase() + props.slice(1,props.length).toLowerCase();
}
})
return answer.join(" ");
}
문제를 다 풀고 테스트 케이스까지 정답을 확인하고 제출 후 채점하기를 눌렀지만 몇몇 케이스에서 런타임에러가 나와 당황했던 문제였다. 꼼꼼히 문제의 제한 조건을 확인해보니 공백문자가 연속해서 나올 수 있습니다.
라고 표기된것을 뒤늦게 확인 했다. 그래서 공백문자가 나올 때 조건문으로 그대로 출력될 수 있도록 바꿔주었다.
문제 설명과 제한 조건을 빼먹지 않고 머리에 넣어놔서 문제를 풀어야 겠다. 문제에서 제시한
입출력 예
만 보고 그 결과값만 생각해서 풀어, 중간에 난해한 상황이 발생했다...👍올바른 피드백은 언제든지 환영입니다~!