문제

코드
function solution(s) {
return s.split(' ')
.map(val => val.split(''))
.map(val => val.map((w, i) => !!(i%2) ? w.toLowerCase() : w.toUpperCase()))
.map(val => val.join('')).join(' ');
.map(val => val.split('')
.map((w, i) => !!(i%2) ? w.toLowerCase() : w.toUpperCase())
.join('')).join(' ');
return s.toUpperCase()
.replace(/(\w)(\w)/g, function(a){return a[0].toUpperCase()+a[1].toLowerCase();})
}
내가 푼 풀이
- 뭐에 홀렸는지 모르겠는데 왜 저렇게 map을 많이썻나 모르겠다...다시 간단하게 수정했다.
- 처음에 문자열에서 replace를 사용하려 했으나 더 복잡해질 것 같아 배열로 처리했다.
정규식 풀이
- (\w)(\w)는 연속된 문자를 뜻한다.
- 코드는 간단하지만 시간이 오래걸린다.