알고리즘/기초

주어진 2차원 배열의 복사를 이용하여 확장하기

leegeonwoo 2023. 8. 8. 01:37

자바 라이브러리의 메서드를 사용하지 않고 2차원 배열을 확장하는 코드이다

 

 

아래 배열을 가로세로 각각 1씩확장하고, 확장된 마지막 행과 열에는 각 행과 열의 총합을 저장하고 출력한다.

int[][] score = {
				{100, 100, 100}, 
				{20, 20, 20} ,
				{30, 30, 30} , 
				{40, 40, 40} , 
				{50, 50, 50} };

 

 

자바는 이미 생성된 배열을 자체적으로 확장 할 수 없기때문에

기존(score배열)보다 +1만큼 큰 새로운 배열을 선언하고 생성한다.

int[][] result = new int[score.length+1][score[0].length+1];

 

 

result[i][j] = score[i][j]를 통해 기존 score배열을 result배열에 복사해주고, 마지막요소에 각각 행과 열의 합들을 넣어준다.

for(int i=0; i<score.length; i++) {
			for(int j=0; j<score[i].length; j++) {
				result[i][j] = score[i][j];
				result[score.length][j] += result[i][j];
				result[i][score[0].length] += result[i][j];
				result[score.length][score[0].length] += result[i][j];
				System.out.print(result[i][j]);
			}System.out.println();
		}

 

 

전체코드

public class Main {
	public static void main(String[] args) {
		int[][] score = {
				{100, 100, 100}, 
				{20, 20, 20} ,
				{30, 30, 30} , 
				{40, 40, 40} , 
				{50, 50, 50} };
		
		int[][] result = new int[score.length+1][score[0].length+1];
		
		for(int i=0; i<score.length; i++) {
			for(int j=0; j<score[i].length; j++) {
				result[i][j] = score[i][j];
				result[score.length][j] += result[i][j];
				result[i][score[0].length] += result[i][j];
				result[score.length][score[0].length] += result[i][j];
				System.out.print(result[i][j]);
			}System.out.println();
		}
		System.out.println();
		System.out.println();
		for(int i=0; i<result.length; i++) {
			for(int j=0; j<result[i].length; j++) {
				System.out.printf("%4d" ,result[i][j]);
			}System.out.println();
		}
}
}

 

출력

100100100

202020

303030

404040

505050

 

 

100 100 100 300

20 20 20 60

30 30 30 90

40 40 40 120

50 50 50 150

240 240 240 720

728x90