단위 행렬(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차 단위 행렬을 생성하는 가장 직관적이고 효율적인 방법 중 하나입니다.