주녘공부일지

[프로그래머스 C#] Lv.2 행렬의 곱셈 본문

Programmers - C#/CodingTest Lv.2

[프로그래머스 C#] Lv.2 행렬의 곱셈

주녘 2023. 12. 5. 16:49
728x90

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. 정답코드 및 핵심 아이디어, 유의사항

뇌절이 오기 쉬운 문제이므로 주의! ( 어떤 게 기준이 되는지 잘 생각해야 함 )

- arr1.GetLength(1) == arr2.GetLength(0) (arr1 x축 == arr2 y축)

- 행렬곱 결과의 크기 : [arr1 y축, arr2 x축]

 

+ 만약, 뇌절이 오는 것 같다면 극단적인 예시로 뭐가 기준이 되는지 생각해보면 도움이 됨

 -> ( 연산 시에 0으로 초기화되는 축이 어디인지, 등 )

    using System;

    public class Solution
    {
        // arr1.GetLength(1) == arr2.GetLength(0) (arr1 x축 == arr2 y축)
        
        public int[,] solution(int[,] arr1, int[,] arr2)
        {
            // 행렬곱 결과의 크기 : [arr1 y축, arr2 x축]
            int[,] answer = new int[arr1.GetLength(0), arr2.GetLength(1)];

            for (int y = 0; y < answer.GetLength(0); y++)
                for (int x = 0; x < answer.GetLength(1); x++)
                    for (int i = 0; i < arr1.GetLength(1); i++)
                        answer[y, x] += arr1[y, i] * arr2[i, x];

            return answer;
        }
    }
728x90