https://programmers.co.kr/learn/courses/30/lessons/12950
//테스트 코드
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
class Quiz1_행렬의덧셈Test {
Quiz1_행렬의덧셈 q;
@BeforeEach
void setUp() throws Exception {
q = new Quiz1_행렬의덧셈();
}
@Test
void testTwoByTwo() {
assertArrayEquals(new int[][]{{4,6},{7,9}}, q.solution(new int[][] {{1,2},{2,3}},new int[][]{{3,4},{5,6}}));
}
@Test
void testTwoByOne() {
assertArrayEquals(new int[][]{{4},{6}}, q.solution(new int[][] {{1},{2}},new int[][]{{3},{4}}));
}
}
// 프로덕션 코드
public class Quiz1_행렬의덧셈 {
public int[][] solution(int[][] arr1, int[][] arr2) {
int[][] answer = new int[arr1.length][arr1[0].length];
for(int i=0; i<arr1.length; i++) {
for(int j=0; j<arr1[i].length; j++) {
answer[i][j] = arr1[i][j] + arr2[i][j];
}
}
return answer;
}
}
// 성공! 처음 보는 사람도 쉽게 이해할 수 있도록 리팩토링!
public class Quiz1_행렬의덧셈 {
public int[][] solution(int[][] arr1, int[][] arr2) {
int[][] answer = new int[sizeOfRow(arr1)][sizeOfColomn(arr1)];
sumOfMatrix(arr1, arr2, answer);
return answer;
}
private void sumOfMatrix(int[][] arr1, int[][] arr2, int[][] answer) {
for(int i=0; i<sizeOfRow(arr1); i++) {
for(int j=0; j<sizeOfColomn(arr1); j++) {
answer[i][j] = arr1[i][j] + arr2[i][j];
}
}
}
private int sizeOfColomn(int[][] arr1) {
return arr1[0].length;
}
private int sizeOfRow(int[][] arr1) {
return arr1.length;
}
}
// 굿!
'코딩테스트연습 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 - JAVA] 직사각형 별찍기 (0) | 2021.11.22 |
---|---|
[프로그래머스 - JAVA] x만큼 간격이 있는 n개의 숫자 (0) | 2021.11.21 |
[프로그래머스 - JAVA] 핸드폰 번호 가리기 (0) | 2021.11.19 |
[프로그래머스 - JAVA] 하샤드 수 (0) | 2021.11.18 |
[프로그래머스 - JAVA] 콜라츠 추측 (0) | 2021.11.16 |