반응형
풀이
- 해당 문제는 뭔가 손으로는 가능한데
- 계속 머리가 멈춘것 처럼 해결 방법이 떠오르지 않아서
- 고민해보다가 그냥 단순히 하나씩 적용해보다 풀림
- 이러한 유형의 문제는 고민보단, 떠오르는 대로 먼저 시도해보는게
- 아이디어가 나오기 좋은 행동이라는 것을 다시 확인
- 해당 문제에선 기존 2차원 배열에서 탐색하는 방법을 거꾸로 해서
- 행열 -> 열행 순서로 접근하는 형식으로 해결
import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;
public class _2740 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M1 = Integer.parseInt(st.nextToken());
int[][] li1 = new int[N][M1];
for (int i=0; i<N; i++) {
st = new StringTokenizer(br.readLine());
for (int j=0; j<M1; j++) li1[i][j]=Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(br.readLine());
int M2 = Integer.parseInt(st.nextToken());
int K= Integer.parseInt(st.nextToken());
int[][] li2 = new int[M2][K];
for (int i=0; i<M2; i++) {
st = new StringTokenizer(br.readLine());
for (int j=0; j<K; j++) li2[i][j]=Integer.parseInt(st.nextToken());
}
int[][] result = new int[N][K];
for (int i=0; i<K; i++) { // 0 1 2
for (int j=0; j<M1; j++) { // 0 1
for (int x=0; x<N; x++) { // 0 1 2
result[x][i]+=li2[j][i]*li1[x][j];
}
}
}
for (int num[]: result) {
for (int n: num) bw.write(n+" ");
bw.write("\n");
}
bw.flush();
}
}
// 1 2 -1 -2 0
// 3 4 0 0 3
// 5 6
'알고리즘' 카테고리의 다른 글
[백준, 자바, 11286번] 절댓값 힙 (0) | 2024.11.25 |
---|---|
[백준, 자바, 1992번] 쿼드트리 (0) | 2024.11.25 |
[백준, 자바, 16139번] 인간-컴퓨터 상호작용 (0) | 2024.11.22 |
[백준, 자바, 11660번] 구간 합 구하기 5 (0) | 2024.11.22 |
[백준, 자바, 2559번] 수열 (누적 합) (0) | 2024.11.21 |