Dev/Algorithm

1D1A - One Day One Algorithm

healthyryu 2018. 3. 14. 23:55


문제 - 행렬의 덧셈


행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬을 입력받는 sumMatrix 함수를 완성하여 행렬 덧셈의 결과를 반환해 주세요.

예를 들어 2x2 행렬인 A = ((1, 2), (2, 3)), B = ((3, 4), (5, 6)) 가 주어지면, 같은 2x2 행렬인 ((4, 6), (7, 9))를 반환하면 됩니다.(어떠한 행렬에도 대응하는 함수를 완성해주세요.)


제출 답안

class SumMatrix {

int[][] sumMatrix(int[][] A, int[][] B) {

int[][] answer = new int[A.length][A[0].length];


for (int i = 0; i < answer.length; i++) {

    for (int j = 0; j < answer[i].length; j++) {

        answer[i][j] = A[i][j] + B[i][j];

    }

}


return answer;

}

// 아래는 테스트로 출력해 보기 위한 코드입니다.

public static void main(String[] args) {

SumMatrix c = new SumMatrix();

int[][] A = { { 1, 2 }, { 2, 3 } };

int[][] B = { { 3, 4 }, { 5, 6 } };

int[][] answer = c.sumMatrix(A, B);

if (answer[0][0] == 4 && answer[0][1] == 6 && 

answer[1][0] == 7 && answer[1][1] == 9) {

System.out.println("맞았습니다. 제출을 눌러 보세요");

} else {

System.out.println("틀렸습니다. 수정하는게 좋겠어요");

}

}

}


처음에는  2X2 행렬에만 포커스를 맞추고 풀었다. 그래서 예제코드는 돌아가는데 테스트 코드가 돌아가지가 않았다. 그래서 대체 뭐가 문제인거지? 싶다가 어느 행렬이라도 들어올 수가 있다는 말에 다시 생각을 했는데, 여기서 문제가 있었다. 어느 행렬이라고는 했는데 주어진 answer[][]이라는 행렬이 2X2 행렬이였고,

 대체 어느 행렬이라도 하면서 answer[][] 은 2x2 행렬도 주어졌는데 대체 어떻게 하라는거야?

라고 생각한 부분이 문제였던것 같았다. 어떤 행렬이도 들어올 수 있으니 sumMatrix() 함수가 2X2 가 아닐 수 있다는것을 생각하지 못했다.



반응형

'Dev > Algorithm' 카테고리의 다른 글

CS50 공부 - 알고리즘  (0) 2018.03.20
1D1A - One Day One Algorithm  (0) 2018.03.19
CS50 공부 - 알고리즘  (0) 2018.03.19
1D1A - One Day One Algorithm  (0) 2018.03.13
10진수를 2진수로 - 입력값을 진법수에 맞게 출력  (0) 2018.03.07