내가 생각했을때 문제에서 원하는부분
입력의 첫 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 10)가 주어진다.
각 테스트 케이스는 한 줄에 다섯 심판이 준 점수 다섯 개의 정수 Ni(1 ≤ Ni ≤ 10, i = 1, 2, ..., 5)가 하나의 공백을 사이에 두고 주어진다.
각 테스트 케이스에 대해서 총점을 한 줄씩 출력한다. 만일 점수 조정을 거쳐서 다시 점수를 매기려고 하는 경우에는 총점 대신 KIN을 출력한다.
내가 이 문제를 보고 생각해본 부분
입력 처리: BufferedReader를 사용하여 입력을 받는다.
첫 줄에서 테스트 케이스의 개수를 읽고, 각 테스트 케이스에 대해 점수를 읽는다.
점수 정렬: Arrays.sort()를 사용하여 점수를 오름차순으로 정렬한다.
이 후, 최고점과 최저점을 제외한 나머지 3명의 점수를 합산한다.
점수 조정 여부 확인: 최고점과 최저점의 차이가 4 이상인 경우 "KIN"을 출력하고, 그렇지 않은 경우는 합산한 점수를 출력한다.
결과 출력: StringBuilder를 사용하여 모든 결과를 한 번에 출력한다.
코드로 구현
package baekjoon.baekjoon_27;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
// 백준 9076번 문제
public class Main969 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
for(int t = 0; t < T; t++) {
String[] input = br.readLine().split(" ");
int[] scores = new int[5];
for(int i = 0; i < 5; i++) {
scores[i] = Integer.parseInt(input[i]);
}
Arrays.sort(scores);
// 최고점과 최저점을 제외한 점수들
int sum = scores[1] + scores[2] + scores[3];
int maxScore = Math.max(scores[1], Math.max(scores[2], scores[3]));
int minScore = Math.min(scores[1], Math.min(scores[2], scores[3]));
// 점수 조정 여부 확인
if(maxScore - minScore >= 4) {
sb.append("KIN\n");
} else {
sb.append(sum).append("\n");
}
}
System.out.print(sb.toString());
br.close();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.