๊ธฐ๋ก๋ฐฉ

BOJ_6987 : ์›”๋“œ์ปต ๋ณธ๋ฌธ

CodingTest/Java

BOJ_6987 : ์›”๋“œ์ปต

Soom_1n 2023. 2. 21. 22:20

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

 

6987๋ฒˆ: ์›”๋“œ์ปต

์›”๋“œ์ปต ์กฐ๋ณ„ ์ตœ์ข… ์˜ˆ์„ ์—์„œ๋Š” 6๊ฐœ๊ตญ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๊ฐ ์กฐ๋ณ„๋กœ ๋™์ผํ•œ ์กฐ์— ์†Œ์†๋œ ๊ตญ๊ฐ€๋“ค๊ณผ ํ•œ ๋ฒˆ์”ฉ, ๊ฐ ๊ตญ๊ฐ€๋ณ„๋กœ ์ด 5๋ฒˆ์˜ ๊ฒฝ๊ธฐ๋ฅผ ์น˜๋ฅธ๋‹ค. ์กฐ๋ณ„๋ฆฌ๊ทธ๊ฐ€ ๋๋‚œ ํ›„, ๊ธฐ์ž๊ฐ€ ๋ณด๋‚ด์˜จ ๊ฐ ๋‚˜๋ผ์˜ ์Šน, ๋ฌด์Šน๋ถ€

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • ์›”๋“œ์ปต์—์„œ 6๊ฐœ์˜ ๊ตญ๊ฐ€๊ฐ€ ์„œ๋กœ 1๋ฒˆ์”ฉ ๊ฒฝ๊ธฐ๋ฅผ ๋›ฐ๊ณ  ๋‚˜์˜จ ๊ฒฐ๊ณผ๋กœ ๊ฐ€๋Šฅํ•œ์ง€ ๋ถˆ๊ฐ€๋Šฅํ•œ์ง€ ํŒ๋‹จํ•œ๋‹ค.
    • 4๋ฒˆ์˜ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ๊ฐ€ ์ฃผ์–ด์ง€๋Š”๋ฐ, ํ•œ ๋‚˜๋ผ์˜ ์Šน, ๋ฌด, ํŒจ์˜ ์ˆ˜๋กœ ์ž…๋ ฅ๋œ๋‹ค.
    • ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ์ด๋ฉด 1, ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ์ด๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • 6๊ฐœ์˜ ๊ตญ๊ฐ€์—์„œ ๊ฒฝ๊ธฐ๋ฅผ ๋›ฐ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” 6C2 = 6*5/2 = 15๊ฐœ ์ด๋‹ค.
    • ์Šน/๋ฌด/ํŒจ ์ƒ๊ด€์—†์ด ์ด 15๋ฒˆ์˜ ๊ฒฝ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉด, ์˜ฌ๋ฐ”๋ฅธ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ์ด๋‹ค.
  • ์ž…๋ ฅ ์ œํ•œ์ด 0~6 ์ด๋ฏ€๋กœ, ํ•œ ๊ตญ๊ฐ€์˜ ์Šน๋ฌดํŒจ์˜ ํ•ฉ์ด 5๊ฐ€ ๋˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.
  • 15๋ฒˆ์˜ ๊ฒฝ๊ธฐ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ์—์„œ 1์”ฉ ๋นผ๋Š” ๋ฐฉ์‹์œผ๋กœ ์—ญ ์ถ”์ ํ•œ๋‹ค.
    • 15๋ฒˆ ๋ชจ๋‘ ํ™•์ธ ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค. (๋ชจ๋‘ 0์ด ๋˜์–ด์•ผํ•œ๋‹ค)

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

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

public class Main {
    static final int SIZE = 15, COUNTRY = 6, GAME = 4;
    static int[][] matches, wc_result;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        matches = new int[SIZE][2];
        int idx = 0;
        for (int i = 0; i < COUNTRY - 1; i++) {
            for (int j = i + 1; j < COUNTRY; j++) {
                matches[idx][0] = i;
                matches[idx][1] = j;
                idx++;
            }
        }

        for (int i = 0; i < GAME; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());

            wc_result = new int[COUNTRY][3]; // win, draw, lose
            boolean flag = true;

            for (int j = 0; j < COUNTRY; j++) {
                int w = wc_result[j][0] = Integer.parseInt(st.nextToken());
                int d = wc_result[j][1] = Integer.parseInt(st.nextToken());
                int l = wc_result[j][2] = Integer.parseInt(st.nextToken());
                if (w + d + l != COUNTRY - 1)
                    flag = false;
            }

            if (flag && worldCup(0)) {
                System.out.print(1 + " ");
            } else
                System.out.print(0 + " ");
        }
    }

    private static boolean worldCup(int idx) {
        if (idx == SIZE) return true;

        int a_country = matches[idx][0];
        int b_country = matches[idx][1];

        if (wc_result[a_country][0] > 0 && wc_result[b_country][2] > 0) { // a์Šน, bํŒจ
            wc_result[a_country][0]--;
            wc_result[b_country][2]--;
            if(worldCup(idx + 1)) return true;
            wc_result[a_country][0]++;
            wc_result[b_country][2]++;
        }

        if (wc_result[a_country][1] > 0 && wc_result[b_country][1] > 0) { // ๋ฌด์Šน๋ถ€
            wc_result[a_country][1]--;
            wc_result[b_country][1]--;
            if(worldCup(idx + 1)) return true;
            wc_result[a_country][1]++;
            wc_result[b_country][1]++;
        }

        if (wc_result[a_country][2] > 0 && wc_result[b_country][0] > 0) { // aํŒจ, b์Šน
            wc_result[a_country][2]--;
            wc_result[b_country][0]--;
            if(worldCup(idx + 1)) return true;
            wc_result[a_country][2]++;
            wc_result[b_country][0]++;
        }
        return false;
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • ๋‚˜๋ผ์˜ ์ˆ˜ COUNTRY, ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ ์ˆ˜ GAME, 6๊ฐœ ์ค‘ 2๊ฐœ๋ฅผ ๋ฝ‘๋Š” ์กฐํ•ฉ ์ˆ˜ SIZE๋ฅผ ์ €์žฅํ•ด๋‘”๋‹ค.
  • 2์ฐจ์› ๋ฐฐ์—ด matches์—๋Š” 15๊ฐ€์ง€ ๋งค์น˜ ๋ฐฉ๋ฒ•(๋ช‡ ๋ฒˆ ๋‚˜๋ผ๊ฐ€ ๋ช‡ ๋ฒˆ ๋‚˜๋ผ์™€ ๊ฒฝ๊ธฐํ•˜๋Š”์ง€)์„ ์ €์žฅํ•˜๊ณ ,
    wc_result๋Š” ์ž…๋ ฅ๋˜๋Š” 4๋ฒˆ์˜ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ํ•œ ๋ฒˆ์”ฉ ์Šน,๋ฌด,ํŒจ๋กœ ๋‚˜๋ˆ  ์ €์žฅํ•œ๋‹ค.
    • ํ•œ ๋‚˜๋ผ์˜ ์Šน,๋ฌด,ํŒจ์˜ ํ•ฉ์ด 5๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด 0์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • worldCup() ๋ฉ”์„œ๋“œ๋Š” 0๋ฒˆ ๊ฒฝ๊ธฐ๋ถ€ํ„ฐ 15๋ฒˆ ๊ฒฝ๊ธฐ๊นŒ์ง€ ์ง„ํ–‰ ๊ฐ€๋Šฅํ•˜๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • ํ•œ ๊ฒฝ๊ธฐ์—์„œ ๋‘ ๋‚˜๋ผ์˜ ๊ฒฐ๊ณผ๋ฅผ ์Šน,๋ฌด,ํŒจ๋กœ ๋‚˜๋ˆ  ๊ฐ๊ฐ ์žฌ๊ท€๋กœ ๋„ฃ๋Š”๋‹ค.
    • ๋งŒ์•ฝ ์Šน,๋ฌด,ํŒจ ๋ชจ๋‘ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.(๋ฐฑํŠธ๋ž˜ํ‚น)
    • true๋Š” ์—ฐ์†์œผ๋กœ ๋ฐ˜ํ™˜ํ•ด์„œ ์ฆ‰์‹œ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
  • woldCup() ์˜ ๊ฒฐ๊ณผ๊ฐ€ true์ด๋ฉด 1์„ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ์ƒํƒœ๊ฐ€ ์•ˆ์ข‹์„๋•Œ ํ’€์—ˆ๋”๋‹ˆ ์ดˆ๋ฐ˜ ๋ฌธ์ œ ๋ถ„์„๋„ ์—‰๋ง์ด์—ˆ๊ณ , ๋””๋ฒ„๊น…๋„ ์ œ๋Œ€๋กœ ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.
    • ๋ฉ˜ํƒˆ์ด ํ„ฐ์ ธ์„œ ์•„์ฃผ ์กฐ๊ธˆ์”ฉ ์ˆ˜์ •ํ•˜๊ณ , ๊ณ„์† ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค๋งŒ ๋ฐ˜๋ณตํ–ˆ๋‹ค(11%์˜ ์ง€์˜ฅ)
    • ๋„ˆ๋ฌด ์ƒ๊ฐ์—†์ด ์šด์œผ๋กœ ํ†ต๊ณผ๋˜๊ธธ ๋ฐ”๋ž€ ๊ฒƒ ๊ฐ™๋‹ค.
  • ๋‹ค๋ฅธ ํ’€์ด ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ–ˆ๊ณ , ํ›„์— ๋‹ค์‹œ ํ•œ ๋ฒˆ ํ’€์–ด๋ณด์•˜๋‹ค.
    • ์ฝ”๋”ฉ ๊ณ„ํš์„ ์ ์–ด๊ฐ€๋ฉฐ ํ’€์ดํ–ˆ๋‹ค.

728x90

'CodingTest > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ_1926 : ๊ทธ๋ฆผ  (0) 2023.03.05
BOJ_3109 : ๋นต์ง‘  (0) 2023.02.22
BOJ_4963 : ์„ฌ์˜ ๊ฐœ์ˆ˜  (0) 2023.02.21
BOJ_17281 : โšพ  (0) 2023.02.20
BOJ_12865 : ํ‰๋ฒ”ํ•œ ๋ฐฐ๋‚ญ  (0) 2023.02.20