문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
n | result |
---|---|
"try hello world" | "TrY HeLlO WoRlD" |
"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.
function solution(s) {
let answer = '';
let sArr = s.split(' ');
for(let i=0; i<sArr.length; i++){
let stringArr = sArr[i].split('');
for(let j=0; j<stringArr.length; j++){
if(j%2 === 0) stringArr[j] = stringArr[j].toUpperCase() ;
if(j === stringArr.length-1){
answer = answer + stringArr.join('');
}
}
if(i !== sArr.length-1 )answer = answer + ' ';
}
return answer;
}
문제설명에는 "문자열 s는 한 개 이상의 단어로 구성되어 있습니다." 라고 되어있었다.
이 말인 즉, s가 "try hello world" 일 수도 있고, "TRY HELLO WORLD"일 수도 있다는 것이다.
즉, 짝수번째 문자를 대문자로 변경하는 로직 뿐 아니라 홀수번째 문자를 소문자로 바꿔주는 로직 또한 필요하다는 것이다.
function solution(s) {
let answer = '';
let sArr = s.split(' ');
for(let i=0; i<sArr.length; i++){
let stringArr = sArr[i].split('');
for(let j=0; j<stringArr.length; j++){
if(j%2 === 0){
stringArr[j] = stringArr[j].toUpperCase() ;
}else{
stringArr[j] = stringArr[j].toLowerCase() ; // 홀수 -> 소문자
}
if(j === stringArr.length-1){
answer = answer + stringArr.join('');
}
}
if(i !== sArr.length-1 )answer = answer + ' ';
}
return answer;
}
입출력 예를 보고 풀이를 단정짓지말고 주어진 문제와 제한사항을 토대로 문제를 풀어야겠다.
function solution(s) {
let answer = s.split(' ').map( word => {
let newWord = '';
for(let i = 0; i<word.length; i++){
i%2 ? newWord+= word[i].toLowerCase() : newWord+= word[i].toUpperCase();
}
return newWord;
}).join(' ')
return answer;
}