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

JavaScript로 n차 단위 행렬(Identity Matrix) 생성하는 방법

단위 행렬(Identity Matrix)이란?

단위 행렬은 n × n 크기의 정사각형 행렬로, 주대각선(main diagonal)의 요소는 모두 1이고, 나머지 요소는 모두 0으로 구성된 행렬을 말합니다.

예를 들어, 3차 단위 행렬은 다음과 같습니다.

const arr = [
    [1, 0, 0],
    [0, 1, 0],
    [0, 0, 1]
];

문제 정의

숫자 하나(n)를 입력받아 해당 크기의 n × n 단위 행렬을 반환하는 JavaScript 함수를 작성해야 합니다.

구현 예제

다음은 이중 반복문을 활용한 구현 코드입니다. 행 인덱스(i)와 열 인덱스(j)가 같으면 1을, 그렇지 않으면 0을 할당하는 방식입니다.

const num = 5;
const constructIdentity = (num = 1) => {
    const res = [];
    for(let i = 0; i < num; i++){
        if(!res[i]){
            res[i] = [];
        };
        for(let j = 0; j < num; j++){
            if(i === j){
                res[i][j] = 1;
            }else{
                res[i][j] = 0;
            };
        };
    };
    return res;
};
console.log(constructIdentity(num));

실행 결과

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

[
    [ 1, 0, 0, 0, 0 ],
    [ 0, 1, 0, 0, 0 ],
    [ 0, 0, 1, 0, 0 ],
    [ 0, 0, 0, 1, 0 ],
    [ 0, 0, 0, 0, 1 ]
]

코드 설명

이 함수의 동작 원리는 간단합니다.

1. 외부 반복문: 행(row)을 순회하며 각 행마다 빈 배열을 먼저 생성합니다.

2. 내부 반복문: 열(column)을 순회하며, 행 번호와 열 번호가 동일한 위치(i === j)에는 1을, 그 외의 위치에는 0을 저장합니다.

이 방식의 시간 복잡도는 O(n²)이며, n차 단위 행렬을 생성하는 가장 직관적이고 효율적인 방법 중 하나입니다.