I. 2차원 배열 기본 사용법
int[][] scores = {
{89, 93, 91, 93, 92, 78, 90, 90, 93, 90},
{91, 82, 72, 98, 92, 87, 77, 87, 74, 88},
{98, 93, 94, 91, 97, 94, 91, 96, 98, 90},
{65, 63, 57, 87, 88, 92, 78, 85, 100, 68},
{45, 50, 48, 63, 67, 58, 40, 66, 47, 64}
};
1. 학생별 평균 구하기 : 각 학생의 평균을 각각 구해서 출력하세요.
for (int i = 0; i < scores.length; i++) { // 학생 수
int sum = 0; // 한 학생의 점수 총합
for (int j = 0; j < scores[i].length; j++) { // 학생 당 점수들
sum += scores[i][j];
}
double average = sum / (double)scores[i].length;
System.out.println((i + 1) + "번째 학생의 평균 점수는 " + average + "점");
2. 학생별 최고점 구하기: 각 학생의 최고 점수를 구해서 출력하세요.
for (int i = 0; i < scores.length; i++) { // 학생 수
int max = 0;
for (int j = 0; j < scores[i].length; j++) { // 학생 당 점수들
if (max < scores[i][j]) {
max = scores [i][j];
}
}
System.out.println((i + 1) + "번째 학생의 최고점은 " + max + "점");
}
3. 평균 최고점 구하기: 평균이 가장 높은 학생의 평균점수와 몇 번째 학생인지 출력하세요.
int maxIndex = 0;
double maxAverage = 0;
for (int i = 0; i < scores.length; i++) { // 학생
int sum = 0;
for (int j = 0; j < scores[i].length; j++) { // 점수
sum += scores[i][j];
}
double average = sum / (double)scores[i].length;
if (maxAverage < average) {
maxAverage = average;
maxIndex = i;
}
}
System.out.println("평균이 가장 높은 학생은 " + (maxIndex + 1) + " 평균 점수는 " + maxAverage);
4. 특정 과목 최고점: 4번째 과목의 최고 성적의 학생이 몇 번째 학생인지와 점수를 출력하세요.
int maxScore = 0;
int maxIndex1 = 0;
for (int i = 0; i < scores.length; i++) { // 학생
if (maxScore < scores[i][3]) {
maxScore = scores [i][3];
maxIndex1 = i;
}
}
System.out.println("4번째 과목의 최고 성적자는 " + (maxIndex1 + 1) + " 점수는 " + maxScore);
5. 일부 평균 최고점: 시험과목 index 3~7 의 평균이 가장 높은 학생의 index를 구하여 출력하세요.
int maxIndex2 = 0;
double maxAverage1 = 0;
for (int i = 0; i < scores.length; i++) {
int sum = 0;
for (int j = 3; j <= 7; j++) {
sum += scores[i][j];
}
double average1 = sum / (double) 5.0;
if (maxAverage1 < average1) {
maxAverage1 = average1;
maxIndex2 = i;
}
}
System.out.println("3~7 과목 평균이 가장 높은 학생은 " + (maxIndex2 + 1) + "번째 학생이고, 평균은 " + maxAverage1);