[programmers] Java Lv.2 - 행렬의 곱셈

2025. 1. 16. 10:36·Algorithm Solving/Java

https://school.programmers.co.kr/learn/courses/30/lessons/12949

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

문제 설명
2차원 행렬 arr1과 arr2를 입력받아, arr1에 arr2를 곱한 결과를 반환하는 함수, solution을 완성해주세요.

제한 조건
행렬 arr1, arr2의 행과 열의 길이는 2 이상 100 이하입니다.
행렬 arr1, arr2의 원소는 -10 이상 20 이하인 자연수입니다.
곱할 수 있는 배열만 주어집니다.

 

입출력 예

 


풀이

행렬의 곱셈

 

✏️ 행렬의 곱셈의 규칙
arr1[row][common]이고 arr2[common][col]일 때
결과 행렬의 크기는 answer[row][col]
(arr1의 열 개수와 arr2의 행 개수는 항상 같아야 함)

row만큼 순회할 때 각 row값을 i라고 하고
col만큼 순회할 때 각 col값을 j라고 하고
common만큼 순회할 때 각 common값을 k라고 하면
answer[i][j] += arr1[i][k] * arr2[k][j]

 

풀이 코드

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        int[][] arr1 = {{1, 4}, {3, 2}, {4, 1}};
        int[][] arr2 = {{3, 3}, {3, 3}};

        int row = arr1.length;
        int col = arr2[0].length;
        int common = arr1[0].length;    // == arr2.length

        // 결과 행렬의 크기: arr1 row 개수 X arr2 col 개수
        int[][] answer = new int[row][col];

        for (int i=0; i< row; i++) {
            for (int j=0; j < col; j++) {
                for (int k=0; k < common; k++) {
                    answer[i][j] += arr1[i][k] * arr2[k][j];
                }
            }
        }

        for (int[] arr : answer) {
            System.out.println(Arrays.toString(arr));
        }
    }
}

 


제출

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        int row = arr1.length;
        int col = arr2[0].length;
        int common = arr1[0].length;    // == arr2.length

        // 결과 행렬의 크기: arr1 row 개수 X arr2 col 개수
        int[][] answer = new int[row][col];

        for (int i=0; i< row; i++) {
            for (int j=0; j < col; j++) {
                for (int k=0; k < common; k++) {
                    answer[i][j] += arr1[i][k] * arr2[k][j];
                }
            }
        }
        return answer;
    }
}
저작자표시 비영리 변경금지 (새창열림)

'Algorithm Solving > Java' 카테고리의 다른 글

[programmers] Java Lv.2 - 의상  (1) 2025.01.22
[programmers] Java Lv.2 - 할인 행사  (2) 2025.01.21
[programmers] Java Lv.2 - n^2 배열 자르기  (0) 2025.01.15
[programmers] Java Lv.2 - H-Index  (0) 2025.01.14
[programmers] Java Lv.2 - 연속 부분 수열 합의 개수  (0) 2025.01.13
'Algorithm Solving/Java' 카테고리의 다른 글
  • [programmers] Java Lv.2 - 의상
  • [programmers] Java Lv.2 - 할인 행사
  • [programmers] Java Lv.2 - n^2 배열 자르기
  • [programmers] Java Lv.2 - H-Index
기만나🐸
기만나🐸
공부한 내용을 기록합시다 🔥🔥🔥
  • 기만나🐸
    기만나의 공부 기록 🤓
    기만나🐸
  • 전체
    오늘
    어제
    • ALL (147) N
      • TIL (Today I Learned) (56) N
      • Dev Projects (15)
      • Algorithm Solving (67)
        • Java (52)
        • SQL (15)
      • Certifications (8)
        • 정보처리기사 실기 (8)
  • 인기 글

  • 태그

    websocket
    bootstrap
    mysql
    백준
    완전탐색
    시뮬레이션
    javascript
    Subquery
    CSS
    sql
    programmers
    greedy
    BFS
    다이나믹프로그래밍
    dp
    Google Fonts
    자료구조
    백트래킹
    jpa
    jQuery
    join
    DFS
    GROUP BY
    jwt
    BOJ
    프로그래머스
    HTML
    Firebase
    java
    그리디
  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
기만나🐸
[programmers] Java Lv.2 - 행렬의 곱셈
상단으로

티스토리툴바