문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
s | return |
---|---|
"try hello world" | "TrY HeLlO WoRlD" |
"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.
function solution(phrase) {
return phrase.split(' ').map(word => {
let output = '';
for (let i = 0; i < word.length; i++) {
output += i % 2 ? word[i].toLowerCase() : word[i].toUpperCase()
};
return output;
}).join(' ');
}
console.log(solution("try hello world"));
// Expected output: TrY HeLlO WoRlD
console.log(solution("this is just a trick"));
// Expected output: ThIs Is JuSt A TrIcK
- 문자열을 공백 기준으로 나누어 배열화, map으로 각 문자에 차례대로 접근
- 각 문자열의 인덱스를 짝수와 홀수를 가려 값을 소문자, 대문자로 변환하여 output에 누적
- ["TrY", "HeLlO", "WoRlD"] 배열을 합쳐 한 문자열로 만듦 (+11점)
function toWeirdCase(s){
return s.toUpperCase().replace(/(\w)(\w)/g, function(a){return a[0].toUpperCase()+a[1].toLowerCase();})
}
- 문장을 모두 대문자로 바꾼뒤 정규표현식으로 찾은 값을 콜백으로 대체한다
- 정규표현식으로 각 문자를 두 개씩 묶어 콜백으로 홀수를 소문자로 대치한다
function toWeirdCase(s){
return s.split(' ').map(i => i.split('').map((j, key) => key % 2 === 0 ? j.toUpperCase() : j).join('')).join(' ')
}
문자를 공백 기준으로 나눠 배열화 -> 글자 기준으로 나눠 배열화 후 조건에 맞는 글자를 대문자화 -> 다시 모든 배열 합치기
map은 아주 유용한 배열 메소드이기 때문에 문자열을 배열로 바꾸어 사용한다