문제: 2차원 배열 arr에 담긴 모든 값의 총합과 평균을 구하는 프로그램을 완성하시오.
class Exercise5_4
{
public static void main(String[] args)
{
int[][] arr = {
{5, 5, 5, 5, 5},
{10, 10, 10, 10, 10},
{20, 20, 20, 20, 20},
{30, 30, 30, 30, 30}
};
int total = 0;
float average = 0;
<-----문제----->
<-----문제----->
System.out.println("total="+total);
System.out.println("average="+average);
}
}
2차원 배열의 총합과 평균을 구하는 문제다.
중첩의 for문으로 arr의 값들을 표현하는데까지 생각이 갔다. 그걸 코드로 풀어보니 다음과 같은 코드를 짰다.
for(int i=0; i<행의 길이; i++) {
for(int j=0; j< 열의 길이; j++) {
total += arr[i][j];
}
}
하지만 도저히 행의 길이와 열의 길이를 표현할 방법을 찾지 못했다. 그래서 책을 뒤져보니, 행의 길이는 arr.length(배열의 길이.length)로 열의 길이는 arr[i].length(배열의 길이.length)로 구할 수 있는 걸 알았다. 이를 문제풀이에 적용해보니 다음과 같은 코드를 만들어 낼 수 있었다.
class Exercise5_4
{
public static void main(String[] args)
{
int[][] arr = {
{5, 5, 5, 5, 5},
{10, 10, 10, 10, 10},
{20, 20, 20, 20, 20},
{30, 30, 30, 30, 30}
};
int total = 0;
float average = 0;
<-----문제----->
for(int i=0; i<arr.length; i++) {
for(int j=0; j<arr[i].length; j++) {
total += arr[i][j];
}
}
average = total /(float)(arr.length * arr[0].length);
<-----문제----->
System.out.println("total="+total);
System.out.println("average="+average);
}
}
문제 핵심키: 2차원 배열의 행과 열을 코드로 표현하는 방법( 행:배열변수.length , 열:배열변수[i].length) / 2차원 배열을 중첩 for문으로 표현하는 아이디어 / 평균인 실수를 구하기위해 float로의 형변환
내가 고민한 흔적
출처:Java의 정석 기초편(저자:남궁성, 출판사:도우출판)
'java > 자바의 정석 연습문제 오답노트' 카테고리의 다른 글
[조건문과 반복문] 연습문제 4-4 (0) | 2022.09.29 |
---|---|
[조건문과 반복문] 연습문제 4-2 (0) | 2022.09.28 |
[조건문과 반복문] 연습문제 4-3 (0) | 2022.09.28 |
[배열] 연습문제 5-5 (0) | 2022.08.28 |
[제어문과 반복문]별 찍기 (0) | 2022.08.21 |