Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 문자열의 각 글자를 n번 반복하는 방법

문제 소개

JavaScript에서 문자열과 숫자 n을 입력받아, 원본 문자열에 포함된 모든 글자를 각각 n번씩 반복한 새로운 문자열을 반환하는 함수를 작성해야 합니다.

예를 들어, 입력 문자열이 다음과 같다고 가정해 보겠습니다.

const str = 'how are you'

여기서 n의 값이 2라면,

출력 결과

기대하는 출력은 다음과 같습니다.

const output = 'hhooww aarree yyoouu'

공백을 포함한 모든 문자가 각각 두 번씩 반복된 것을 확인할 수 있습니다.

해결 방법: String.prototype.repeat() 활용

이 문제는 JavaScript의 내장 메서드인 repeat()를 사용하면 매우 간단하게 해결할 수 있습니다. 문자열을 한 글자씩 순회하면서 각 문자를 n번 반복한 뒤 결과에 누적하는 방식입니다.

코드 구현

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));

콘솔 출력

hhooww aarree yyoouu

코드 동작 원리

위 코드의 실행 흐름을 단계별로 살펴보면 다음과 같습니다.

  1. 결과 변수 초기화: 빈 문자열 res를 선언하여 최종 결과를 저장할 준비를 합니다.
  2. 문자열 순회: for 반복문으로 문자열의 처음부터 끝까지 한 글자씩 접근합니다.
  3. 문자 반복: 각 문자에 대해 repeat(n)을 호출하여 해당 문자를 n번 반복합니다.
  4. 결과 누적: 반복된 문자를 res에 이어 붙입니다.
  5. 결과 반환: 모든 문자 처리가 끝나면 완성된 문자열을 반환합니다.

대안: split(), map(), join() 조합

반복문 대신 함수형 스타일을 선호한다면 다음과 같이 더 간결하게 작성할 수도 있습니다.

const repeatNTimes = (str, n) => 
  str.split('').map(char => char.repeat(n)).join('');

console.log(repeatNTimes('how are you', 2));
// hhooww aarree yyoouu

이 방식은 문자열을 배열로 분리한 후, 각 요소를 변환하고 다시 하나의 문자열로 합치는 과정을 거칩니다. 코드가 짧고 의도가 명확하게 드러난다는 장점이 있으며, 일반적인 입력 크기에서는 두 방식 모두 충분한 성능을 보입니다.

마무리

문자열의 각 글자를 n번 반복하는 문제는 repeat() 메서드의 존재만 알고 있다면 어렵지 않게 해결할 수 있습니다. 반복문 기반 방식과 split-map-join 방식 중 어떤 것을 선택할지는 팀의 코드 스타일과 가독성 기준에 따라 판단하면 됩니다.