알고리즘/기초
주어진 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