https://programmers.co.kr/learn/courses/30/lessons/12930
map()
을 잘 활용하면 코딩테스트에서 쉽게 문제를 풀 수 있는 것들이 많다. map과 친해지자!👯♂️
function solution(s) {
return s=s.split(' ').map(word => {
let result='';
for(let i=0; i<word.length; i++) {
if(i%2===0) {
result+=word[i].toUpperCase();
}
else result+=word[i].toLowerCase();
}
return result;
}).join(' ');
}
function solution(s) {
let answer='';
s=s.split(' ');
for(let i=0; i<s.length; i++){
let arr=s[i].split('');
for(let j=0; j<arr.length; j++){
if(j%2===0) arr[j]=arr[j].toUpperCase();
answer+=arr[j];
}
answer+=" ";
}
return answer.slice(0, answer.length-1);
}
아니 도대체 왜 안되는거지? 코드만 봤을 때는, 직관적으로 생각했을 때는 큰 오류가 없어보인다. 에러 메시지를 검색해보니,좋은 Q&A를 발견했다.
문자열 전체를 replacing 하는 것은 되지만, 문자열 중 일부를 바꾸는 것은 안된다! (a="apple"일 때, a="APPLE"은 가능하지만 a="Apple"은 불가능하다는 뜻)
따라서, arr[i][j].toUpperCase()로 만드는 것은 안된다
10/25
일부 문자를 대문자나 소문자로 변환 후 다시대입하는 것은 안됨!
예를들어 'string'에서 s만 대문자로 변환 후 다시 대입하는 것은 안됨(
s[0]=s[0].toUpperCase()
는 안됨)하지만,
result+=s[0].toUpperCase()
와 같은것은 됨! (result=''로 가정)