문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
s | return |
---|---|
"try hello world" | "TrY HeLlO WoRlD" |
"try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를 리턴합니다.
const solution = (s) =>
s.split(" ")
.map(x => x.split("")
.map((y, i) => i % 2 ? y.toLowerCase() : y.toUpperCase() ).join(""))
.join(" ")
/* 내가 처음 작성한 코드이다. +12점이나 맞았다ㅎㅎ
1. split(" "): 입력받은 문자열 s를 공백을 기준으로 분리한다.
2. map을 사용하여 배열의 각 원소에 대해 다음의 작업을 수행한다:
split(""): 단어를 문자 단위로 분리한다.
map((y, i) => i % 2 ? y.toLowerCase() : y.toUpperCase()):
분리된 각 문자에 대해, 문자의 인덱스가 짝수일 경우 대문자로, 홀수일 경우 소문자로 변경한다.
join(""): 변경된 문자들을 다시 하나의 단어로 합친다.
join(" "): 처리된 단어들을 다시 하나의 문자열로 합친다. 이때 단어 사이는 공백으로 구분한다.
*/
const solution = (s) => {
var result = "";
for(var word of s.split(" ")) {
for(let i in word) {
result += word[i][parseInt(i) % 2 == 0 ? "toUpperCase" : "toLowerCase"]();
}
result += " ";
};
return result.slice(0, -1);
}
/* SOLUTION1은 선언형이고 이번엔 명령형으로 작성해보았다.
1. result라는 빈 문자열을 선언한다. 이 문자열에는 최종 변환 결과가 저장된다.
2. s.split(" ")를 사용하여 입력 문자열을 단어 단위로 분리한다.
3. 각 단어에 대해, for(var i in word)를 사용하여 단어의 각 문자에 접근한다.
4. parseInt(i) % 2 == 0 ? "toUpperCase" : "toLowerCase"를 사용하여 인덱스가
짝수일 때는 대문자로, 홀수일 때는 소문자로 변환하는 메서드를 선택한다.
5. 선택된 메서드를 호출하여 문자를 변환하고, result에 추가한다.
6. 모든 문자를 변환한 후에는 단어의 끝을 나타내는 공백을 result에 추가한다.
7. return result.slice(0, -1);를 사용하여 문자열의 끝에 추가된 불필요한 공백을 제거하고 반환한다.
*/