s = s.split(' ').map(item => item.split(''))
return s
[["3","p","e","o","p","l","e"],["u","n","F","o","l","l","o","w","e","d"],["m","e"]]
for(let i = 0; i < s.length; i++) {
s[i][0] = s[i][0].toUpperCase()
for(let j = 1; j < s[i].length; j++) {
s[i][j] = s[i][j].toLowerCase()
}
}
위와 같이 제출하고 채점을 해보면, 런타임 에러가 다수 발생한다.
제한 사항을 잘 보면, 어절 사이의 공백이 연속으로 등장하는 경우도 있을 수 있다고 한다.
예를 들어
'hihi hello'
와 같은 경우, 공백을 기준으로 각 어절을 분리하여 제이든 케이스를 만들면,
0: (5) ['H', 'i', 'h', 'i']
1: []
2: (5) ['H', 'e', 'l', 'l', 'o']
위와 같이 연속으로 등장하게 된 두번 째 공백이 빈 배열로 생성이 된다.
따라서 각 어절을 순회하게 될 때, 빈 배열의 경우에는 순회를 skip하도록 하면 통과된다.
function solution(s) {
s = s.split(' ').map(item => item.split(''))
for(let i = 0; i < s.length; i++) {
if(s[i].length === 0) { // 빈 배열(연속된 공백)의 경우 순회 통과
continue;
}
s[i][0] = s[i][0].toUpperCase()
for(let j = 1; j < s[i].length; j++) {
s[i][j] = s[i][j].toLowerCase()
}
}
return s.map(item => item.join('')).join(' ')
}