

-Code
import java.io.*;
import java.util.*;
public class BOJ9017 {
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
int testCase = Integer.parseInt(br.readLine());
for (int test = 0; test < testCase; test++) {
int dataCnt = Integer.parseInt(br.readLine());
// 6명 이상인 팀을 구별하기 위해 입력값 저장 및 셋팅
StringTokenizer st = new StringTokenizer(br.readLine());
Map<Integer, Integer> teamCnt = new HashMap<>();
int[] teamOrder = new int[dataCnt];
for (int i = 0; i < dataCnt; i++) {
int nowTeam = Integer.parseInt(st.nextToken());
teamOrder[i] = nowTeam;
teamCnt.put(nowTeam, teamCnt.getOrDefault(nowTeam, 0) + 1);
}
// 6명 이상인 팀의 점수 저장
Map<Integer, ArrayList<Integer>> teamScore = new HashMap<>();
int nowScore = 1;
for (int team : teamOrder) {
// 6명 이상인 팀을 기준으로 점수를 매겨야 하므로 조건식 사용
if (teamCnt.get(team) == 6) {
ArrayList<Integer> nowTeamList = teamScore.getOrDefault(team, new ArrayList<>());
nowTeamList.add(nowScore++);
teamScore.put(team, nowTeamList);
}
}
// 최소 점수 계산
int winningTeam = -1;
int minScore = Integer.MAX_VALUE;
int minFiveScore = Integer.MAX_VALUE;
for(int team : teamScore.keySet()) {
List<Integer> nowTeamScoreList = teamScore.get(team);
// 현재 점수 계산
int caclScore = 0;
for (int i = 0; i < 4; i++) {
caclScore += nowTeamScoreList.get(i);
}
// 최소값이 같은 경우 계산을 위한 값 저장
int fiveScore = nowTeamScoreList.get(4);
// 최소값보다 작은 경우
if (minScore > caclScore) {
minFiveScore = fiveScore;
minScore = caclScore;
winningTeam = team;
} else if (minScore == caclScore && minFiveScore > fiveScore) {
// 최소값과 같고 5번째 값도 작은 경우
winningTeam = team;
minFiveScore = fiveScore;
}
}
System.out.println(winningTeam);
}
br.close();
}
}
처음에 하나하나 계산해서 넘어가는데 6인 경우에만 점수를 계산하는 것을 다르게 이해해서 잘못 짰습니다. 그래서 해당 부분에 대한 힌트인 전체 입력 저장 및 cnt로 6개인 경우에만 계산하도록 해서 해결했습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [백준/Java] 3758번 KCPC (0) | 2026.03.01 |
|---|---|
| [백준/Java] 17889번 Mars Window (0) | 2026.03.01 |
| [백준/Java] 4471번 The Navi-Computer is Down! (0) | 2026.02.28 |
| [백준/Java] 2548번 대표 자연수 (1) | 2026.02.27 |
| [백준/Java] 17484번 진우의 달 여행 (Small) (0) | 2026.02.27 |