차근차근
백준 2740번 - 행렬곱셈(JAVA) 본문
보기 편하게 나타내면 다음과 같다
간단히 곱하는 과정을 보면 반복되는 여부에 따라 for문에 3개로 나눠진다
// 간단히 표현해 보면
for(i < A의 N){
for(j < B의 K){
for(t < A의 M){
a[i][k] * b[k][j]
}
}
}
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer token = new StringTokenizer(br.readLine());
int N = Integer.parseInt(token.nextToken());
int M = Integer.parseInt(token.nextToken());
int a[][] = new int[N][M];
for(int i=0; i<N; i++){
token = new StringTokenizer(br.readLine());
for(int j=0; j<M; j++){
a[i][j] = Integer.parseInt(token.nextToken());
}
}
token = new StringTokenizer(br.readLine());
token.nextToken();
int K = Integer.parseInt(token.nextToken());
int b[][] = new int[M][K];
for(int i=0; i<M; i++){
token = new StringTokenizer(br.readLine());
for(int j=0; j<K; j++){
b[i][j] = Integer.parseInt(token.nextToken());
}
}
int r[][] = new int[N][K];
for(int i=0; i<N; i++){
for(int j=0; j<K; j++){
for(int k=0; k<M; k++){
r[i][j] += a[i][k] * b[k][j];
}
}
}
StringBuilder sb = new StringBuilder();
for(int i=0; i<N; i++){
for(int j=0; j<K; j++){
sb.append(r[i][j]).append(' ');
}
sb.append("\n");
}
System.out.print(sb);
'알고리즘' 카테고리의 다른 글
백준 1629 - 곱셈(나머지 분배법칙, 지수법칙, JAVA) (3) | 2024.03.01 |
---|---|
백준 1463번 - 1로 만들기(JAVA) (0) | 2023.09.27 |
Comments