티스토리 뷰
728x90
반응형
문제 요약
- 알고리즘 분류: 구현
- 난이도: Silver5
- 문제내용:
- 두개의 행렬을 주어지면 행렬 곱셈 한 결과를 구해라.
- 사이트: https://www.acmicpc.net/problem/2740
문제풀이
이번 문제는 고등학교 수학에 나오는 행렬 연산 문제이다. 행렬 곱셈 공식만 알면 문제 푸는데는 어려움이 없으니까 바로 밑에 코드보고 공부하면된다. 코드 보기전에 행렬 곱셈에 대한 원리를 알고 보면 될거 같다.
Code
Python
N, M = map(int, input().split())
A = [list(map(int, input().split())) for _ in range(N)]
M, K = map(int, input().split())
B =[list(map(int, input().split())) for _ in range(M)]
result = [[0] * K for _ in range(N)]
# 행렬 연산
for i in range(N):
for j in range(K):
for x in range(M):
result[i][j] += A[i][x] * B[x][j]
for array in result:
print(' '.join(map(str, array)))
Java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[][] A = new int[N][M];
for(int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
for(int j = 0; j < M; j ++) {
A[i][j] = Integer.parseInt(st.nextToken());
}
}
st = new StringTokenizer(br.readLine());
M = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
int[][] B = new int[M][K];
for(int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
for(int j = 0; j < K; j ++) {
B[i][j] = Integer.parseInt(st.nextToken());
}
}
int[][] result = new int[N][K];
for(int i = 0; i < N; i++) {
for(int j = 0; j < K; j ++) {
result[i][j] = 0;
for(int x = 0; x < M; x++) {
result[i][j] += A[i][x] * B[x][j];
}
}
}
StringBuilder sb = new StringBuilder();
for(int i = 0; i < N; i++) {
for(int j = 0; j < K; j ++) {
sb.append(result[i][j]).append(" ");
}
sb.append("\n");
}
System.out.println(sb);
}
}
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[BAEKJOON] 5585 거스름돈 (0) | 2022.11.23 |
---|---|
[BAEKJOON] 11401 이항 계수 3 (0) | 2022.11.22 |
[BAEKJOON] 16099 Larger Sport Facility (0) | 2022.11.19 |
[BAEKJOON] 1021 회전하는 큐 (0) | 2022.11.18 |
[BAEKJOON] 14581 팬들에게 둘러싸인 홍준 (0) | 2022.11.18 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- DP
- 백트레킹
- 그리디
- 배열
- java
- 동적계획법
- Programmerse
- 조합
- 파이썬
- 넓이 우선 탐색
- 알고리즘
- BaekJoon
- 이론
- 자바
- DFS
- 문자열
- spring-boot
- LeetCode
- 백준
- level2
- Greedy
- 그래프
- 수학
- 누적합
- 구현
- JSCODE
- 동적 계획법
- Python
- BFS
- 재귀호출
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함