-
프로그래머스 > 행렬기타/알고리즘 2021. 7. 23. 13:25
행렬 재구성
i 행의 모든 숫자와 j 열의 모든 숫자의 합이 i행 j 열의 값인 새로운 행렬만들기.
단, 교차 지점의 숫자는 한번만 더해야한다.
1 2 3 4 5 6 7 8 9 1 +2 + 3 + 4 + 7 = 17
17 19 21 23 25 27 29 31 33 matrix result [[1,2,3][4,5,6][7,8,9]] [[17,19,21][23,25,27][29,31,33]] 계속 메서드 하나 안에서 연산을 하려고 하니 복잡해지고 잘못된 결과만을 반환했다.
이중 for 문이 두개 필요한 연산으로 두개의 메서드로 쪼갠다.
package lmhs.comm.base.test; public class Matrix { public static void main(String[] args) { int [][] test1 = {{1,2,3},{4,5,6},{7,8,9}}; int [][] result = solution(test1); for(int i=0;i<result.length;i++) { for(int j=0;j<result.length;j++) { System.out.println("i> " +i+", j > " +j+", result[i][j] > " + result[i][j]); } } } static int[][] solution(int[][] matrix){ int n = matrix.length; int[][] result = new int[n][n]; //가로 for(int i=0;i<n;i++) { //세로 for(int j=0;j<n;j++) { result[i][j] = getSum(matrix, n, i,j); } } return result; } static int getSum(int[][] matrix, int len, int x, int y) { int sum = 0; for(int i = 0; i < len; i++) { sum += matrix[i][y]; } for(int i = 0; i < len; i++) { sum += matrix[x][i]; } sum -= matrix[x][y]; return sum; } }
반응형'기타 > 알고리즘' 카테고리의 다른 글
프로그래머스 > 스택/큐 > 프린터 (0) 2021.07.25 프로그래머스 > 최고의 입찰가 (0) 2021.07.23 프로그래머스 > 해시 > 전화번호부 (0) 2021.07.22 프로그래머스 > 해시 > 위장 (0) 2021.07.21 프로그래머스 > 해시 >베스트 앨범 (0) 2021.07.21