문제
풀이 코드
function solution(s) {
let str = '';
str = s
.split(' ')
.map((item) =>
item
.split('')
.map((st, index) =>
index % 2 == 0 ? st.toUpperCase() : st.toLowerCase()
)
.join('')
)
.join(' ');
return str;
}
풀이 과정
문제를 보자마자 split 으로 나누고, map 을 통해 구현하고, join 으로 다시 문자열을 합치면 된다는 생각이 들었다.
풀이 단계를 설명하면 다음과 같다
1. 입력된 문자열 s 를 공백( ' ' ) 기준으로 나눈다.
2. 나뉘어진 문자열은 배열로 공백을 기준으로 배열로 저장된다. 해당 배열을 map 함수로 보낸다.
3. 첫번째 map 함수에서, 또 다시 각 배열의 요소를 한글자씩 나누어 배열로 저장한다.
4. 한글자씩 나뉘어진 요소들의 인덱스가 짝수이면 대문자로 변환, 홀수이면 소문자로 변환하여 반환한다.
5. 반환된 배열의 요소들을 다시 join 함수로 문자열로 만든다.
6. 각 배열 인덱스에 변환된 문자열들을 하나의 문자열로 다시 join 을 이용해 만들어 반환한다
다른사람의 코드
function toWeirdCase(s){
return s.toUpperCase().replace(/(\w)(\w)/g, function(a){return a[0].toUpperCase()+a[1].toLowerCase();})
}
훨씬 간단하게 구현 하셨다
정규식을 이용한 풀이라니 많이 배워간다!