자바/백준
[백준 9076] 점수 집계
슈슈버거
2024. 8. 16. 01:50
문제
https://www.acmicpc.net/problem/9076
내가 작성한 코드
import java.util.*;
import java.io.*;
public class qor9076 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
for (int i = 0; i < T; i++) {
String input[] = br.readLine().split(" ");
ArrayList<Integer> score = new ArrayList<>();
for (int j = 0; j < 5; j++) {
score.add(Integer.parseInt(input[j]));
}
Collections.sort(score);
score.remove(0);
score.remove(score.size() - 1);
int maxScore = Collections.max(score);
int minScore = Collections.min(score);
if (maxScore - minScore >= 4) {
bw.write("KIN\n");
} else {
int sum = 0;
for (int s : score) {
sum += s;
}
bw.write(sum + "\n");
}
}
bw.flush();
bw.close();
}
}
맨 처음에는 int형 2차원 배열로만 생각을 했는데 그렇게 되면 max, min을 다 비교를 일일이 해줘야 하고
그걸 삭제한 후에도 index를 수정해줘야 하더라
그래서 sort를 쓸 수 있으면 좋겠다는 생각을 했고
그 결과 생각난게 ArrayList였다
바로 add를 통해 값을 다 넣어준 다음에 sort를 통해 정렬시키면 맨 처음과 마지막에 최고/최저점이 있으니
고민이 줄어든다.
그러고 나서도 바로 맨 처음과 마지막으로 다시 한번 비교를 할까했는데
명확하게 max, min이라는 연산도 사용해보고 싶어서 최종 결과를 구할 때는 두 연산을 사용해줬다
입력으로 오는 각각의 경우가 다른 경우다 보니
굳이 입력들을 한번에 배열로 저장할 필요가 없겠다 싶어 각 입력건에 대해 바로바로 수행하도록 for문을 작성해줬다.
출력은 한번에 하는것이 누락 걱정도 없으니 bw도 한번에