프로그래밍 언어/JAVA

<Java>자바의 정석 5장 11번(더 큰 배열 생성하기)

창조적생각 2021. 7. 2. 14:07

주어진 2차원 배열의 데이터보다 가로와 세로로 1이 더 큰 배열을 생성해서 배열의 행과 열의 마지막 요소에 각 열과 행의 총합을 저장하고 출력하는 프로그램이다. (1)에 알맞는 코드를 넣어서 완성하시오.

 

public class Practice5_11 {

public static void main(String[] args) {
// TODO Auto-generated method stub
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++) {

 

 

 

 

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

System.out.print(result[i][j]+"");

System.out.println();

}

}

}

 

 

[결과]

100 100 100 300 
20 20 20 60 
30 30 30 90 
40 40 40 120 
50 50 50 150 
240 240 240 720 

 

 

[풀이]

public class Practice5_11 {

public static void main(String[] args) {
// TODO Auto-generated method stub
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];
int sum = 0; //임의로 추가한 것이기 때문에 없어도 됩니다. sum 쓰지 마시고 그냥 result[5][3]에 모두 더한 값을 넣어도 됩니다. 


for(int i = 0; i < score.length; i++) {
for(int j = 0; j < score[i].length;j++) {
result[i][j] = score[i][j]; // score[] 배열에 있는 모든 수를 채워넣어줍니다. 
sum +=score[i][j] ;}
}

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

{
tmp += score[i][j];

} //각 행들의 합입니다. 이들을 tmp에 저장해 놓고 그 값을 result에 넣었습니다.
result[i][3] = tmp;
}
for(int i = 0; i < score[i].length; i++) {
int tmp = 0;
for(int j = 0; j < score.length;j++) 

{
tmp += score[j][i];

}//각 열들의 합입니다. j와 i를 반대로 함으로써 구할수있습니다.
result[5][i] = tmp;
}
result[5][3] = sum; // 마지막 result[5][3]의 값입니다. sum 없이 for문으로도 구할 수 있습니다.

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

System.out.print(result[i][j]+"");

System.out.println();

}

}

}

 

728x90