[프로그래머스] 행렬의 곱셈 (JS)

hhkim·2023년 8월 14일
0

Algorithm - JavaScript

목록 보기
99/188
post-thumbnail

풀이 과정

  1. arr1의 길이에 빈 배열을 넣은 2차원 배열 생성
    이때 최종 크기는 arr1의 길이 * arr2[0]의 길이가 되어야 함
  2. 1에서 만든 2차원 배열의 각 1차원 배열에 대해 반복
  3. 1차원 배열의 각 요소에 대해 반복
  4. 곱셈을 위해 다시 arr1[0]의 길이만큼 반복
    👉 3중 for문
  5. 곱한 값을 결과 배열에 넣기: push()

코드

function solution(arr1, arr2) {
  const result = Array(arr1.length)
    .fill(0)
    .map((_) => []);
  for (let i = 0; i < arr1.length; ++i) {
    for (let j = 0; j < arr2[0].length; ++j) {
      let tmp = 0;
      for (let k = 0; k < arr1[0].length; ++k) {
        tmp += arr1[i][k] * arr2[k][j];
      }
      result[i].push(tmp);
    }
  }
  return result;
}

🤔

행렬의 곱셈을 코드로 표현하려니까 이렇게 어렵다니...
종이에 인덱스 써가면서 규칙을 찾아내고 힘들게 풀었는데, 다른 사람 풀이에 map과 reduce만 써서 한 줄로 깔끔하게 짠 코드를 보니까 정말 대단하다 싶었다.
이해하는 데는 좀 걸렸지만 결국 같은 원리니까 이걸 그렇게 풀어나간 사람들이 존경스러울 정도 ㅋㅋㅋ 열심히 해야지
그래도 요즘엔 아예 손도 못 대는 게 아니라 어떻게든 문제를 풀어나가고 있다는 데 의의가 있는 것 같다.

1개의 댓글

comment-user-thumbnail
2023년 8월 14일

좋은 글 감사합니다.

답글 달기