-
백준 2740번 : 행렬 곱셈 (C 언어)c c++ 언어 공부 2023. 6. 14. 01:47
https://www.acmicpc.net/problem/2740
2740번: 행렬 곱셈
첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 순서대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개
www.acmicpc.net
Code:
12345678910111213141516171819202122232425262728293031323334353637383940#include <stdio.h>int main() {int n, m,k;int first[101][101] = {0,};int second[101][101] = { 0, };int result[101][101] = { 0, };scanf("%d %d", &n, &m);for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){scanf("%d", &first[i][j]);}}scanf("%d %d", &m, &k);for (int i = 0; i < m; i++){for (int j = 0; j < k; j++){scanf("%d", &second[i][j]);}}for (int i = 0; i < n; i++) {for (int j = 0; j < k; j++) {for (int k = 0; k < m; k++) {result[i][j] += first[i][k] * second[k][j];}}}for (int i = 0; i < n; i++){for (int j = 0; j < k; j++){printf("%d ", result[i][j]);}printf("\n");}return 0;}cs 문제풀이:
1. 문제 설명
두 개의 행렬을 곱한 결과를 출력하는 문제입니다. 첫 번째 행렬의 크기는 n x m이며, 두 번째 행렬의 크기는 m x k입니다. 두 행렬을 곱한 결과를 출력하는 프로그램을 작성해야 합니다.
2. 코드 설명
주어진 코드는 두 개의 행렬을 입력받고, 곱한 결과를 출력하는 과정을 수행합니다.
- 두 행렬의 크기를 입력받아 각각 n, m, k에 저장합니다.
- 첫 번째 행렬의 요소를 입력받아 first 배열에 저장합니다.
- 두 번째 행렬의 요소를 입력받아 second 배열에 저장합니다.
- 결과를 저장할 result 배열을 초기화합니다.
- 첫 번째 행렬의 행(i)과 두 번째 행렬의 열(j)을 고정하고, 두 번째 행렬의 행/열(k)을 변경하며 각 요소들을 곱하여 result[i][j]에 누적합니다.
- 결과 행렬인 result를 출력합니다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 15666번 : N과 M(12) (0) 2023.06.15 백준 15655번 : N과 M (6) (C 언어) (0) 2023.06.15 백준 5543번 : 상근날드 (C 언어) (0) 2023.06.12 백준 2293번 : 동전 1 (C 언어) (1) 2023.06.12 백준 11758번 : CCW (C 언어) (0) 2023.06.12