[백준알고리즘] 2738번 행렬 덧셈
2024. 1. 22. 08:29ㆍ백준알고리즘/구현
728x90
문제출처 : https://www.acmicpc.net/problem/2738
알고리즘 유형
알고리즘분류 : 수학
언어 : JAVA
문제
접근
처음 문제를 접했을 때 입력값을 어떤형태로 받아야할지에 대한 것이 고민됨.
대략 문제를 접했을 때, 2차원배열로 받으면 대상의 결과값을 편하게 덧셈한 결과를 출력할 수 있을 것으로 예상.
다만, 2중 for문을 여러 번 사용해야한다는 점이 찝찝했음.
코드
package org.example.question.구현;
import java.util.Arrays;
import java.util.Scanner;
/*
* 문제: N*M크기의 두 행렬 A와 B가 주어졌을 때, 두 행렬을 더하는 프로그램을 작성하시오.
* 입력: 첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다.
* 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같고, 행렬의 원소는 절댓값이 100보다 작거나 같은 정수이다.
* 출력: 첫째 줄부터 N개의 줄에 행렬 A와 B를 더한 행렬을 출력한다. 행렬의 각 원소는 공백으로 구분한다.
* */
public class Q2738 {
public static void main(String[] args) {
//1. 입력값 담기
// 입력값을 2차원배열에 담음
//
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int M = sc.nextInt();
int[][] arrN = new int[N][M];
int[][] arrM = new int[N][M];
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
arrN[i][j] = sc.nextInt();
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
arrM[i][j] = sc.nextInt();
}
}
//2. A행렬 B행렬 더하기
int[][] rstArr = new int[N][M];
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
rstArr[i][j] = arrN[i][j] + arrM[i][j];
System.out.print(rstArr[i][j]);
if (j < M - 1) {
System.out.print(" ");
}
}
System.out.println();
}
}
}
728x90
'백준알고리즘 > 구현' 카테고리의 다른 글
[백준알고리즘] 2920번 음계 (2) | 2024.01.26 |
---|---|
[백준알고리즘] 10773번 제로 (2) | 2024.01.25 |