문제 이해하기
문자열을 입력받아 멕시코 웨이브(Mexican Wave) 형태로 변환하는 JavaScript 함수를 작성해야 합니다. 멕시코 웨이브란, 문자열에서 한 번에 한 글자씩 순서대로 대문자로 바꾼 여러 버전의 문자열을 만드는 것을 의미합니다.
예를 들어, 입력 문자열이 다음과 같다면 −
const str = 'edabit';
출력 결과는 각 위치의 문자가 차례대로 하나씩 대문자로 변환된 배열이어야 합니다 −
const output = ["Edabit", "eDabit", "edAbit", "edaBit", "edabIt", "edabiT"];
구현 방법
먼저 문자열의 특정 인덱스에 있는 문자를 다른 문자로 교체하는 replaceAt 헬퍼 함수를 만들고, 이를 String.prototype에 추가합니다. 그다음 map() 메서드를 사용해 각 인덱스마다 해당 위치의 문자를 대문자로 변환한 새로운 문자열을 생성하면 됩니다.
예제 코드
const str = 'edabit';
const replaceAt = function(index, char){
let a = this.split("");
a[index] = char;
return a.join("");
};
String.prototype.replaceAt = replaceAt;
const createEdibet = word => {
let array = word.split('')
const res = array.map((letter, i) => {
let a = word.replaceAt(i, letter.toUpperCase());
return a;
});
return res;
}
console.log(createEdibet(str));
실행 결과
콘솔에는 다음과 같은 결과가 출력됩니다 −
[ 'Edabit', 'eDabit', 'edAbit', 'edaBit', 'edabIt', 'edabiT' ]
코드 설명
replaceAt 함수는 문자열을 split("")으로 문자 배열로 분리한 뒤, 지정된 인덱스의 문자를 교체하고 join("")으로 다시 하나의 문자열로 합칩니다.
createEdibet 함수는 원본 문자열을 문자 단위로 순회하면서, 각 인덱스의 문자를 toUpperCase()로 대문자화한 새로운 문자열을 만들어 배열에 담아 반환합니다. 그 결과 첫 번째 요소부터 마지막 요소까지 대문자 위치가 하나씩 이동하는 멕시코 웨이브 형태의 배열이 완성됩니다.