function solution(s) {
let array = s.split(" ");
let words = [];
for (i = 0; i < array.length; i++) {
words.push(array[i].split(""));
}
for (i = 0; i < array.length; i++) {
for (j = 0; j < words[i].length; j += 2) {
words[i][j] = words[i][j].toUpperCase();
};
words[i] = words[i].join("");
};
return words.join(" ");
};
위와 같이 작성했더니 한 문제를 제외한 모든 문제에 오류가 (...) ㅠㅠ
내가 의도한 바는 다음과 같다.
let array = s.split(" ");
: 공백을 기준으로 문자열을 분리하여 배열로 저장
for (i = 0; i < array.length; i++) { words.push(array[i].split("")); }
: 배열로 담아준 단어들을 각각 분리하여
words
라는 배열에 새로 푸시
for (i = 0; i < array.length; i++) { for (j = 0; j < words[i].length; j += 2) { words[i][j] = words[i][j].toUpperCase(); }; words[i] = words[i].join(""); }; return words.join(" ");
: 배열 안의 배열 구조이기 때문에 하나씩 뜯어서 0번째부터 짝수번째 인덱스만 대문자로 변환하여 덮어주고 반환한 뒤 join함수로 합쳐보고자 함
근데 사실 쓰면서도 너무 어지러워서 이게 맞나.. 어디서 문제가 된 걸까 가늠이 잘 잡히지 않았다.
function solution(s) {
let words = s.split(" "); // 문자열을 공백을 기준으로 분리하여 단어 배열에 저장
let answer = [];
for (let i = 0; i < words.length; i++) {
let word = "";
for (let j = 0; j < words[i].length; j++) {
// 짝수 인덱스일 때 대문자로 변환, 홀수 인덱스일 때 소문자로 변환
if (j % 2 === 0) {
word += words[i][j].toUpperCase();
} else {
word += words[i][j].toLowerCase();
}
}
answer.push(word); // 변환한 단어를 배열에 추가
}
return answer.join(" "); // 배열을 공백을 기준으로 이어붙여 문자열로 반환
}
word
라는 새로운 빈 문자열을 생성해서 word += word[i][j].toUpperCase()
등을 사용해 추가하는 게 인상 깊은 코드였다. 숫자로만 += 해봤지, 문자열을 이런 방식을 이용하여 추가하는 것은 한번도 시도해본 적 없기 때문에 신선했다!