[Java] 2차원 배열을 이용하여 실기점수 평가하기

Haeun Noh·2022년 9월 20일
0

JAVA_예제

목록 보기
20/23
post-thumbnail

0920


각 조의 항목별 점수를 입력 받아 최고 점수를 받은 조를 선발하라. 점수항목과 조는 다음과 같다.

완성도창의성이해도
1조
2조
3조
4조
5조

//출력 예시
1조 점수 입력 : 10
1조 점수 입력 : 20
1조 점수 입력 : 22
1조 점수 입력 : 22
1조 점수 입력 : 2
2조 점수 입력 : 10
2조 점수 입력 : 19
2조 점수 입력 : 18
3조 점수 입력 : 100
3조 점수 입력 : 100
3조 점수 입력 : 200
3조 점수 입력 : 20
3조 점수 입력 : 20
3조 점수 입력 : 1
4조 점수 입력 : 20
4조 점수 입력 : 20
4조 점수 입력 : 20
5조 점수 입력 : 13
5조 점수 입력 : 15
5조 점수 입력 : 13
최고팀 : 4번째팀 -> 점수 : 60

문제 조건

  1. 2차원 배열 score[5][3]을 이용한다.
  2. 세 개의 항목을 합산한 점수가 가장 높은 조를 1등으로 출력한다.
    출력 예시 : 최고팀 : 3번째 팀 -> 점수 : 59
  3. 각 항목의 점수는 0-20점 사이의 점수만 입력 받는다고 가정한다.
    만약 이외의 범위의 점수가 입력되었을 경우 다시 입력받는다.

소스 코드

package Array;

import java.util.Scanner;

public class Array2_score {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		int[][] score = new int[5][3];
		int[] sum = new int[5];
		int index = 0;
		int max;
		
		
		//입력
		for ( int i = 0; i < score.length; i++ ) {
			for ( int j = 0; j < score[i].length; j++ ) {
				do {
					System.out.print((i+1)+"조 점수 입력 : ");
					score[i][j] = scan.nextInt(); 
				} while ( score[i][j] < 0 || score[i][j] > 20);
				sum[i] += score[i][j];
			}
		}
		
		//처리
		max = sum[0];
		int team = 1;			//최고팀
		for ( int i = 1; i < score.length; i++ ) {
			if ( max <= sum[i]) {
				max = sum[i];
				team = i+1;
			}
		}
		
		//출력
		System.out.println("최고팀 : "+team+"번째팀 -> 점수 : "+max);
		
	}

}

소스 풀이

import java.util.Scanner;
...
		Scanner scan = new Scanner(System.in);
		
		int[][] score = new int[5][3];
		int[] sum = new int[5];
		int max;

점수 입력을 받기 위한 Scanner를 세팅한다.

각각의 팀의 분야별 점수를 입력할 score[][]의 크기를 53으로 지정한다. 5개의 팀과 각 팀을 평가할 심사 기준 3개이다.
각 팀의 총점을 저장할 sum배열을 선언한다. 5개의 팀이므로 크기를 5로 세팅한다.
5개의 팀의 sum중에서 최댓값을 나타내는 max를 선언한다.


		//입력
		for ( int i = 0; i < score.length; i++ ) {
			for ( int j = 0; j < score[i].length; j++ ) {
				do {
					System.out.print((i+1)+"조 점수 입력 : ");
					score[i][j] = scan.nextInt(); 
				} while ( score[i][j] < 0 || score[i][j] > 20);
				sum[i] += score[i][j];
			}
		}

1~5조의 각 부문별 점수를 입력받아 score배열에 차곡차곡 저장한다.
입력받는 순서는 완성도, 창의성 이해도 순서이다.
만약 0~20까지의 범위에서 벗어난 점수를 입력받았을 경우 다시 입력하도록 만들고 정상적인 점수를 sum배열에 누적시킨다.


		//처리
		max = 0;
		int team = 1;			//최고팀
		for ( int i = 0; i < score.length; i++ ) {
			if ( max <= sum[i]) {
				max = sum[i];
				team = i+1;
			}
		}

최댓값을 나타내는 max의 초깃값을 0, 즉 점수의 최솟값으로 준다.
최고 점수를 받은 조를 받는 team을 선언 후 1로 초기화한다.
만약 max에 들어있는 조의 점수보다 sum[i]에 들어있는 조의 점수가 더 크다면 max에는 sum[i]의 점수를 저장하고 최고 점수 팀도 teami+1을 저장한다. sum[0]의 값이 1조의 값이므로 i+1team에 저장한다.


		//출력
		System.out.println("최고팀 : "+team+"번째팀 -> 점수 : "+max);
		
	}

}

최고팀과 몇 번째 팀과 점수를 출력한다.



profile
기록의 힘을 믿는 개발자, 노하은입니다!

0개의 댓글