Q 2738 행렬 덧셈
💡 문제 요약 및 분석
N * M 크기의 두 행렬 A와 B가 주어졌을 때, 두 행렬을 더해서 출력하면 된다.
💡 알고리즘 설계
📌 핵심 아이디어 : 배열을 하나만 생성해서 두 번째 행렬의 값을 곧바로 더하자.
입력
- StringTokenizer 로 행렬의 크기 N, M 입력받아 이차원 배열 생성.
연산
- while - for 구조로 N * 2 개의 줄을 입력 받으면서 배열에 더한다.
출력
- 이중 for문으로 StringBuilder 에 저장하여 한 번에 출력한다.
💡 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String num = br.readLine();
StringTokenizer st = new StringTokenizer(num);
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int[][] ary = new int[N][M];
for (int i = 0; i < 2; i++) {
for (int j = 0; j < N; j++) {
st = new StringTokenizer(br.readLine());
for (int k = 0; k < M; k++) {
ary[j][k] += Integer.parseInt(st.nextToken());
}
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
sb.append(ary[i][j]).append(" ");
}
sb.append("\n");
}
System.out.println(sb);
}
}
💡 시간 복잡도, 공간 복잡도
시간 복잡도 | 공간 복잡도 |
---|---|
O(n * m) | O(n * m) |
💡 느낀점 및 기억할 정보
- 공백으로 자르기 : split() 써도 된다.
String[] line = br.readLine().split()
으로 공백을 제거한 문자열 배열로 변환 가능하다.