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

JavaScript로 문자열을 반복해 원하는 길이의 배열 만들기

문제 정의

문자열의 문자를 순서대로 반복하면서, 지정한 개수(limit)에 도달할 때까지 배열을 생성하는 함수를 작성해야 합니다. 예를 들어 문자열 'aba'와 limit 값 5가 주어진 경우를 생각해 봅시다.

string = "aba", limit = 5 → 결과 배열 ["a", "b", "a", "a", "b"]

즉, 문자열의 각 문자를 앞에서부터 하나씩 꺼내 배열에 채우고, 문자열의 끝에 도달하면 다시 처음부터 순환하며 limit개가 될 때까지 반복하는 것이 핵심입니다.

구현 코드

이 문제는 나머지 연산자(%)를 활용하면 매우 간결하게 해결할 수 있습니다. 인덱스를 문자열 길이로 나눈 나머지를 사용하면 문자열 범위를 벗어나지 않으면서 자동으로 처음으로 되돌아가는 순환이 가능하기 때문입니다.

const string = 'Hello';
const limit = 15;
const createStringArray = (string, limit) => {
    const arr = [];
    for(let i = 0; i < limit; i++){
        const index = i % string.length;
        arr.push(string[index]);
    };
    return arr;
};
console.log(createStringArray(string, limit));
console.log(createStringArray('California', 5));
console.log(createStringArray('California', 25));

코드 동작 원리

위 코드의 핵심 로직은 i % string.length입니다. 반복 변수 i가 0부터 limit-1까지 증가하는 동안, 이 값을 문자열 길이로 나눈 나머지는 항상 0부터 문자열 길이 - 1 사이의 값을 가집니다.

예를 들어 문자열 'aba'(길이 3)와 limit 5의 경우, 인덱스는 0, 1, 2, 0, 1로 계산되므로 결과적으로 ['a', 'b', 'a', 'a', 'b']라는 배열이 만들어집니다. 이처럼 나머지 연산자는 일정한 패턴을 반복할 때 널리 사용되는 유용한 기법입니다.

실행 결과

콘솔 출력 결과는 다음과 같습니다.

[
    'H', 'e', 'l', 'l',
    'o', 'H', 'e', 'l',
    'l', 'o', 'H', 'e',
    'l', 'l', 'o'
]
[ 'C', 'a', 'l', 'i', 'f' ]
[
    'C', 'a', 'l', 'i', 'f', 'o',
    'r', 'n', 'i', 'a', 'C', 'a',
    'l', 'i', 'f', 'o', 'r', 'n',
    'i', 'a', 'C', 'a', 'l', 'i',
    'f'
]

'Hello'는 15글자가 필요하므로 세 번 반복되었고, 'California'는 limit이 5일 때 앞의 5글자만 잘려 나왔으며, limit이 25일 때는 두 번 반복된 후 남은 부분까지 채워진 것을 확인할 수 있습니다.