java
백준 2738번 문제 행렬 덧셈 (Java_자바)
먼지제거제
2024. 3. 3. 00:32
문제 ) https://www.acmicpc.net/problem/2738
오늘은 행렬 문제를 풀어보자!
두 가지 방법 Scanner 그리고 (BufferedReader + StringTokenizer)를 사용해서 이중 for문으로 입력과 출력을 해보자!
포인트!!
행렬 A(2차원 배열 3x3), 행렬 B(2차원 배열 3x3)를 만들고
A의 행 수 3개(1 1 1)와 숫자와
B의 행 수 3개(3 3 3)의 숫자를
더해주자!
Scanner 사용
import java.util.Scanner;
public class Procession_2738 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int arr1[][] = new int[n][m];
int arr2[][] = new int[n][m];
/*
* 1 1 1
* 2 2 2
* 0 1 0
* */
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
arr1[i][j] = sc.nextInt();
}
}
/*
* 3 3 3
* 4 4 4
* 5 5 100
* */
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
arr2[i][j] = sc.nextInt();
}
}
/*
* 4 4 4
* 6 6 6
* 5 6 100
*
* */
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
System.out.print(arr1[i][j]+arr2[i][j]+" ");
if(j == m-1){ // 열 2번 끝 , 개행 추가
System.out.println();
}
}
}
}
}
이중 포문 3번은... 뭔가.. 2번으로 줄일수 있을 거 같은데 조금 더 노력해 보자!!
BufferedReader + StringTokenizer 사용
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Procession_2738 {
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 arr1[][] = new int[n][m];
int arr2[][] = new int[n][m];
/*
* 1 1 1
* 2 2 2
* 0 1 0
* */
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < m; j++) {
arr1[i][j] = Integer.parseInt(st.nextToken());
}
}
/*
* 3 3 3
* 4 4 4
* 5 5 100
* */
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < m; j++) {
arr2[i][j] = Integer.parseInt(st.nextToken());
}
}
/*
* 4 4 4
* 6 6 6
* 5 6 100
*
* */
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
System.out.print(arr1[i][j]+arr2[i][j]+" ");
if(j == m-1){ // 열 2번 끝 , 개행 추가
System.out.println();
}
}
}
}
}
와... 이 정도라니 Scanner -> BufferedReader, StringTokenizer로 바꾸니깐
메모리와 시간이 반으로 줄었다...
다짐 ) 좀 더 많은 고수님들의 블로그를 참고해서 이중 for문을 줄일 수 있는 코드를 만들어보자!