본문 바로가기
코딩테스트

[정렬] 백준 9076번 점수 집계 java(자바)

by Enhydra lutris 2023. 1. 3.

https://www.acmicpc.net/problem/9076

 

9076번: 점수 집계

입력의 첫 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 한 줄에 다섯 심판이 준 점수 다섯 개의 정수 Ni(1 ≤ Ni ≤ 10, i = 1, 2, ..., 5)가 하나의 공백을 사이에 두고

www.acmicpc.net

문제

한국 체조협회에서는 심판의 오심을 막기 위하여 점수 집계 시스템을 고치기로 하였다. 이전에는 5명의 심판이 1점부터 10점까지 정수의 점수를 주면 최고점과 최저점을 하나씩 제외한 점수의 합을 총점으로 하였다. 이를 보완하기 위해서 최고점과 최저점을 뺀 나머지 3명 점수의 최고점과 최저점의 차이가 4점 이상 나게 되면 점수 조정을 거쳐서 다시 점수를 매기려고 한다. 점수를 집계하여 총점을 계산하거나, 점수 조정을 거쳐서 다시 점수를 매기려고 하는 경우에는 총점 대신 KIN(Keep In Negotiation)을 출력하는 프로그램을 작성하시오.

 

입력

입력의 첫 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 한 줄에 다섯 심판이 준 점수 다섯 개의 정수 Ni(1 ≤ Ni ≤ 10, i = 1, 2, ..., 5)가 하나의 공백을 사이에 두고 주어진다.

 

출력

각 테스트 케이스에 대해서 총점을 한 줄씩 출력한다. 만일 점수 조정을 거쳐서 다시 점수를 매기려고 하는 경우에는 총점 대신 KIN을 출력한다.

 

코드

import java.util.Arrays;
import java.util.Scanner;

public class No9076 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int T = sc.nextInt(); //테스트 케이스 개수
        int[] arr = new int[5]; //5명 심판의 점수

        for (int i = 0; i < T; i++) {
            for (int j = 0; j < 5; j++) {
                arr[j] = sc.nextInt();
            }
            Arrays.sort(arr); //정렬

            if (arr[3] - arr[1] >= 4) {
                System.out.println("KIN"); //점수 차이가 4점이상이면 KIN 출력
            } else {
                System.out.println(arr[1] + arr[2] + arr[3]); //4점 이하이면 총점 출력
            }
        }
        sc.close();
    }

}

풀이

1. 입력받은 5명 심판의 점수를 정렬한다.

2. 제일 높은 점수와 가장 낮은 점수를 제외한 점수들 중 가장 높은 점수와 가장 낮은 점수

즉, arr[3]과 arr[1]에 있는 점수차가 4점 이상이면 KIN을 출력하고 아니면 5개 점수중에 가장 높은 점수와 가장 낮은 점수를 제외한 3개의 점수의 총합을 출력한다.

3. 1,2번 과정을 테스트케이스 개수(T)만큼 반복한다.

댓글