문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
s | return |
---|---|
"try hello world" | "TrY HeLlO WoRlD |
20656
function solution(s) {
//문자열을 쉽게 관리하기 위해 배열로 만들었다, split하여 공백을 기준으로 만들고 이를 다시 map하여 각각 배열을 2차원 배열로 만들어 따로 관리하기 위해 만들었다.
let arr = s.split(" ").map((v) => v.split(""))
//arr의 형태를 보기위한 출력
console.log(arr)
//arr의 길이는 인덱스 value가 3개가 담긴 형태(문제마다 다름)
for(let i = 0; i < arr.length; i++){
//1차원의 배열, 즉 2차원까지 접근하기위해 for문의 for문으로 만들었으며 각각 index마다의 길이 만큼 반복하였다.
for(let j = 0; j < arr[i].length; j +=2){
//짝수 인덱스를 대문자로 만들기 위한 코드
arr[i][j] = arr[i][j].toUpperCase();
}
//홀수 인덱스에 접근하여 해당 value를 소문자로 만들었다.
for(let j = 1; j <arr[i].length; j +=2){
arr[i][j] = arr[i][j].toLowerCase();
}
//1차원 배열로 만들기 위해 join하였다
arr[i] = arr[i].join("")
}
//배열의 값을 문자열로 바꾸기 위해 다시 join을 사용하였고 콤마를 만들어 합쳤다.
let string = arr.join(",")
//이 문자열을 다시 콤마를 찾아 공백으로 만들어 합쳤다.(하다보니 알게된 사실인데 바로 공백을 기준으로 만들면 된다 ㅎ)
string = string.replace(/\,/g," ")
//문자열을 확인하기 위한 값
console.log(string)
// 결과를 리턴
return string;
}
function toWeirdCase(s){
//모든 문자열을 바로 대문자로 만들고 이 문자열을 replace하는데 문자열 2개씩 선택하여 중 앞은 대문자, 뒤는 소문자로 바꾼다.
return s.toUpperCase().replace(/(\w)(\w)/g, function(a){return a[0].toUpperCase()+a[1].toLowerCase();})
}