PS/Baekjoon Online Judge
[백준 26310] Finalists [Java]
kimyoungrok
2025. 3. 2. 18:28
728x90
문제
https://www.acmicpc.net/problem/26310
풀이
문제에서 주어진 절차 A1 ~ A4에 따라 각 지역의 경쟁력을 계산하고, 최종 팀을 결정하는 문제다.
A1에서는 주어진 가중치에 따라 점수를 계산하면 된다.
// A1
// 입력 순서: s p_t p_u r_t r_u f
// site score = 0.56 * r_u + 0.24 * r_t + 0.14 * p_u + 0.06 * p_t + 0.3 * f
for (int i = 0; i < 6; i++) {
st = new StringTokenizer(br.readLine());
String country = st.nextToken();
final int p_t = Integer.parseInt(st.nextToken());
final int p_u = Integer.parseInt(st.nextToken());
final int r_t = Integer.parseInt(st.nextToken());
final int r_u = Integer.parseInt(st.nextToken());
final int f = Integer.parseInt(st.nextToken());
double score = 0.56 * r_u + 0.24 * r_t + 0.14 * p_u + 0.06 * p_t + 0.3 * f;
regionals.add(new Regional(country, score));
}
A2에서는 경쟁력을 기준으로 내림차순 정렬하면 된다.
// A2
regionals.sort((a, b)-> Double.compare(b.score, a.score));
A3에서는 슬롯을 각 지역에 배분하고, 수가 나누어 떨어지지 않는 경우에는 스코어가 높은 지역 순서대로 슬롯을 배분하면 된다.
// A3
final int remaining = N - 6;
for (Regional reg : regionals) {
reg.slots = 1;
}
int addBase = remaining / 6;
for (Regional reg : regionals) {
reg.slots += addBase;
}
int addExtra = remaining % 6;
for (int i = 0; i < addExtra; i++) {
regionals.get(i).slots++;
}
A4에서는 지역이 “Taiwan”인 팀을 찾아 배분된 슬롯 수를 출력하면 된다.
// A4
int res = 0;
for (Regional reg : regionals) {
if (reg.country.equals("Taiwan")) {
res = reg.slots;
break;
}
}
System.out.println(res);
소스코드
https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/practice/26310.java
728x90