-
[알고리즘 문제] 프로그래머스 행렬의 곱셈IT/알고리즘 2019. 5. 22. 11:00
중학교때 많이 풀었던 행렬의 곱셈을 자바코드로 작성해보자.
너무 오래되서 계산방법이 헷갈렷...........
첫번째 행렬의 열의 수와 두번째 행렬의 행의 수가 같아야 곱셈이 가능하다.
곱셈으로 인해 생성되는 행렬은 첫번째 행렬의 행, 두번째 행렬의 열의 크기만하다.
예)
[2][3] [3][2] [2][2]
1 2 3 1 2 6 12
1 2 3 x 1 2 = 6 12
1 2
이 점을 꼭 생각하면서 풀어야한다!!!
소스코드 ↓↓↓
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455public class matrix {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("첫번째 행렬 크기 입력");int x = scan.nextInt();int y = scan.nextInt();System.out.println("두번째 행렬 크기 입력");int x2 = scan.nextInt();int y2 = scan.nextInt();int[][] arr = new int[x][y];int[][] arr2 = new int[x2][y2];int[][] arr3 = new int[x][y2];System.out.println("첫번째 행렬 값 입력");for(int i=0; i<x; i++){for(int j=0; j<y; j++){arr[i][j] = scan.nextInt();}}System.out.println("두번째 행렬 값 입력");for(int i=0; i<x2; i++){for(int j=0; j<y2; j++){arr2[i][j] = scan.nextInt();}}//행렬곱셈for(int i=0; i<x; i++){for(int j=0; j<y2; j++){int sum = 0;for(int k=0; k<y; k++){sum+=arr[i][k]*arr2[k][j];}arr3[i][j] = sum;}}//출력for(int i=0; i<x; i++){for(int j=0; j<y2; j++){System.out.print(arr3[i][j] + " ");}System.out.println();}}}cs 실행결과 ↓↓↓
수학은 넘 어려웡
'IT > 알고리즘' 카테고리의 다른 글
[알고리즘 문제] 프로그래머스 문자열 다루기 기본 (2) 2019.09.18 [알고리즘 문제] 백준 알고리즘 : 감소하는 수 (2) 2019.09.15 [알고리즘 문제] 코딩도장 로또프로그램 (0) 2019.05.05 [알고리즘 문제] 프로그래머스 콜라츠 추측 (2) 2019.05.01 [알고리즘 문제] 프로그래머스 이상한 문자 만들기 (0) 2019.04.28