0822.2024.Today I Learned

Sungju Kim·2024년 8월 22일

Sparta_Coding_Camp_TIL

목록 보기
21/53

행렬의 곱셈 알고리즘 문제 (프로그래머스)

나의 첫 풀이 (실패)

첫 풀이는 시간 초과로 인해 실패했다.

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        int[][] answer = new int[arr1.length][arr2.length];
        int a = 0;
        int i = 0;
        while (true)
        {
            int sum = 0;
            for (int j=0; j<arr2.length; j++)
            {
                sum +=arr1[a][j]*arr2[j][i];
            }
            answer[a][i] = sum;
            i++;
            if (i == arr2.length)
            {
                a++;
                i=0;
            }
            if (a==arr1.length)
                break;
                
        }        
        
        return answer;
    }
}

성공한 풀이

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        int rows1 = arr1.length;
        int cols1 = arr1[0].length;
        int cols2 = arr2[0].length;
        
        int[][] answer = new int[rows1][cols2];
        // calculation for each row in arr1
        for (int a = 0; a < rows1; a++) {
            
            // calculation for each column in arr2
            for (int i = 0; i < cols2; i++) {
                int sum = 0;
                
                // calculate sum
                for (int j = 0; j < cols1; j++) {
                    sum += arr1[a][j] * arr2[j][i];
                }
                answer[a][i] = sum;
            }
        }
        
        return answer;
    }
}
profile
Fully ✨committed✨ developer, always eager to learn!

0개의 댓글