"꾸준하고 완벽한 한 걸음"

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