문자열과 숫자 n을 입력받아, 원본 문자열의 모든 글자를 n번씩 반복한 새로운 문자열을 반환하는 자바스크립트 함수를 작성해야 합니다.
문제 이해하기
예를 들어, 입력 문자열이 다음과 같다고 가정해 보겠습니다.
const str = 'how are you'
여기서 n 값이 2라면, 최종 출력 결과는 아래와 같아야 합니다.
const output = 'hhooww aarree yyoouu'
즉, 공백을 포함한 모든 문자가 각각 두 번씩 반복됩니다.
구현 예제
다음은 위 문제를 해결하는 전체 코드입니다.
const str = 'how are you';
const repeatNTimes = (str, n) => {
let res = '';
for(let i = 0; i < str.length; i++){
// String.prototype.repeat() 함수 활용
res += str[i].repeat(n);
}
return res;
};
console.log(repeatNTimes(str, 2));
코드 설명
이 함수는 for 루프를 통해 문자열의 각 문자를 순서대로 순회합니다. 각 문자마다 ES6에서 도입된 String.prototype.repeat() 메서드를 호출해 해당 문자를 n번 반복한 뒤, 누적 변수 res에 이어 붙이고 최종적으로 반환합니다.
repeat(count) 메서드는 호출한 문자열을 count 횟수만큼 반복한 새로운 문자열을 돌려주며, count가 0이면 빈 문자열을 반환합니다.
대안: split(), map(), join() 활용
같은 동작을 더 간결하고 선언적인 스타일로 구현할 수도 있습니다.
const repeatNTimes = (str, n) =>
str.split('').map(ch => ch.repeat(n)).join('');
출력 결과
콘솔에 출력되는 결과는 다음과 같습니다.
hhooww aarree yyoouu