Algorithm/Baekjoon

[Algorithm/Baekjoon] ํฌ๋กœ์Šค ์ปจํŠธ๋ฆฌ - 9017 (S4/JAVA)

dpdms2148 2023. 7. 24. 21:45
728x90

๐Ÿ“‘๋ฌธ์ œ๋งํฌ

 

9017๋ฒˆ: ํฌ๋กœ์Šค ์ปจํŠธ๋ฆฌ

์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋Š” ํ‘œ์ค€์ž…๋ ฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ž…๋ ฅ์€ T ๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ž…๋ ฅ ํŒŒ์ผ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ T ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ๋Š” ๋‘ ์ค„์— ํ•˜๋‚˜์˜

www.acmicpc.net

๐Ÿ’ป์ฝ”๋“œ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    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++) {
            int N = Integer.parseInt(br.readLine());

            int[] team = new int[201];       // ํŒ€ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด(index : ํŒ€ ๋ฒˆํ˜ธ, value : ํŒ€์› ์ˆ˜)
            int[][] teamRunner = new int[N][2]; // ์„ ์ˆ˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด(index : ๋“ฑ์ˆ˜, [0]ํŒ€, [1]์ ์ˆ˜)
            int[] teamScore = new int[201];
            StringTokenizer st = new StringTokenizer(br.readLine());
            for (int i = 0; i < N; i++) {
                int teamNumber = Integer.parseInt(st.nextToken());
                team[teamNumber]++;
                teamRunner[i][0] = teamNumber;
            }

            //๋“ฑ์ˆ˜ ๋ณ„๋กœ ์ ์ˆ˜ ๊ณ„์‚ฐ
            int point = 1;
            for (int i = 0; i < N; i++) {
                if (team[teamRunner[i][0]] < 6) {// ํŒ€์˜ ์ฐธ๊ฐ€ ์„ ์ˆ˜๊ฐ€ 6๋ช… ๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ๋Š” ์ ์ˆ˜ ๊ณ„์‚ฐ์—์„œ ์ œ์™ธ
                    for (int j = 0; j < N; j++) {
                        if (teamRunner[j][0] == teamRunner[i][0]) teamRunner[j][1] = -1;
                    }
                } else {
                    teamRunner[i][1] = point++;
                }

            }

            /*for (int i = 0; i < N; i++) {
                System.out.print(teamRunner[i][1] + " ");
            }*/
            int winner = 0;
            int winnerScore = Integer.MAX_VALUE;
            int winnerFifthScore = 0;
            for (int i = 1; i < 201; i++) {
                if (team[i] < 6) continue;
                int count = 0;
                int score = 0;
                int fifthScore = 0;
                for (int j = 0; j < N; j++) {
                    if (teamRunner[j][0] != i) continue;
                    if (teamRunner[j][1] == -1) continue;

                    count++;
                    if (count == 5) {//5๋ฒˆ์งธ ์„ ์ˆ˜๋ผ๋ฉด ์ ์ˆ˜๋งŒ ์ €์žฅํ•˜๊ณ  ๋„˜์–ด๊ฐ
                        fifthScore = teamRunner[j][1];
                        break;
                    }
                    score += teamRunner[j][1];
                }

                if (score < winnerScore) { // ์ ์ˆ˜๊ฐ€ ๋‚ฎ์€ ๊ฒฝ์šฐ
                    winner = i;
                    winnerScore = score;
                    winnerFifthScore = fifthScore;
                } else if (score == winnerScore) { //์ ์ˆ˜๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ
                    if (fifthScore < winnerFifthScore) { //5๋ฒˆ์งธ ์„ ์ˆ˜ ์ ์ˆ˜๋ฅผ ๋น„๊ต
                        winner = i;
                        winnerScore = score;
                        winnerFifthScore = fifthScore;
                    }
                }
                //System.out.println(winner+" "+winnerScore+" "+winnerFifthScore);
            }
            sb.append(winner).append("\\n");
        }
        System.out.print(sb);
    }
}

โณํšŒ๊ณ 

  • ์ฒ˜์Œ์—๋Š” ๋ฌธ์ œ ์กฐ๊ฑด์ด ๊นŒ๋‹ค๋กœ์›Œ์„œ ์–ด๋–ป๊ฒŒ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ณ„์‚ฐํ•ด์•ผ ํ• ์ง€ ๋ง‰๋ง‰ํ–ˆ๋Š”๋ฐ, ์กฐ๊ฑด๋Œ€๋กœ ์ฐจ๋ถ„ํžˆ ๋”ฐ๋ผ๊ฐ€๋‹ค ๋ณด๋‹ˆ ํ’€์ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  • ์ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ์—์„œ๋Š” 6๋ช…์ด ์ดํ•˜์ธ ํŒ€์„ ๋„˜์–ด๊ฐ€๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, ์šฐ์Šน์ž๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ์—์„œ ๋นผ๋จน์–ด์„œ ํ‹€๋ฆฐ ๊ณณ์„ ์ฐพ๋Š”๋ฐ ์–ด๋ ค์›€์ด ์žˆ์—ˆ๋‹ค.
728x90