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

JavaScript에서 주어진 너비와 높이로 2차원 배열 생성하기

문제 개요

JavaScript에서 입력값에 따라 다차원(2차원) 배열을 생성하는 함수를 작성해야 합니다. 이 함수는 다음과 같은 세 가지 인자를 받습니다.

  • row — 배열 안에 포함될 하위 배열(subarray)의 개수
  • col — 각 하위 배열이 가질 요소의 개수
  • val — 각 요소에 채워질 값

예를 들어, 세 가지 입력값이 각각 2, 3, 10이라면 출력 결과는 다음과 같아야 합니다.

const output = [[10, 10, 10], [10, 10, 10]];

즉, 하위 배열이 2개(row) 있고, 각 하위 배열은 요소를 3개씩(col) 가지며, 모든 요소는 10(val)으로 채워집니다.

구현 방법 1: 반복문 사용

가장 기본적인 접근 방식은 중첩 반복문을 사용하는 것입니다. 바깥쪽 반복문으로 하위 배열을 만들고, 안쪽 반복문으로 각 요소에 값을 할당합니다.

const row = 2;
const col = 3;
const val = 10;

const constructArray = (row, col, val) => {
    const res = [];
    for(let i = 0; i < row; i++){
        for(let j = 0; j < col; j++){
            if(!res[i]){
                res[i] = [];
            }
            res[i][j] = val;
        }
    }
    return res;
};

console.log(constructArray(row, col, val));

출력 결과

위 코드를 실행하면 콘솔에 다음과 같은 결과가 출력됩니다.

[ [ 10, 10, 10 ], [ 10, 10, 10 ] ]

구현 방법 2: Array.from 활용 (더 간결한 방법)

ES6의 Array.from() 메서드를 사용하면 훨씬 간결하게 동일한 결과를 얻을 수 있습니다.

const constructArray = (row, col, val) =>
    Array.from({ length: row }, () => Array(col).fill(val));

console.log(constructArray(2, 3, 10));
// [ [ 10, 10, 10 ], [ 10, 10, 10 ] ]

Array.from({ length: row }, ...)는 길이가 row인 새로운 배열을 만들면서, 두 번째 인자로 전달된 콜백 함수의 반환값으로 각 하위 배열을 초기화합니다. 이때 Array(col).fill(val)을 사용해 길이가 col이고 val로 채워진 하위 배열을 생성합니다.

다만 fill()은 객체나 배열처럼 참조 타입인 값을 채울 때 모든 요소가 같은 객체를 공유하므로 주의해야 합니다. 숫자나 문자열 같은 원시 타입에는 문제없이 사용할 수 있습니다.