์šฐ๊ทœ์ด์ธ์šฐ์œค
Eager To Learn ๐ŸŒŒ
์šฐ๊ทœ์ด์ธ์šฐ์œค
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿก ํ™ˆ
  • ๐Ÿš€ ๊นƒํ—ˆ๋ธŒ
  • โ›… ํƒœ๊ทธ ํด๋ผ์šฐ๋“œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (217)
    • ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm ๊ธฐ๋ฒ• (1)
      • ๋ฐ”ํ‚น๋… (21)
    • ๋ธ”๋กœ๊ทธ ์ด์‚ฌ (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • ์ž๋ฃŒ๊ตฌ์กฐ (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • ๊ฐœ๋ฐœ์„œ์  (15)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)
      • ์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ (7)
      • ์นœ์ ˆํ•œ SQL ํŠœ๋‹ (7)
    • ํšŒ๊ณ  (2)
hELLO ยท Designed By ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค

Eager To Learn ๐ŸŒŒ

๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/๋ฐ”ํ‚น๋…

[JAVA] ๋ฐฑ์ค€ 1043๋ฒˆ ใ€G4.๊ฑฐ์ง“๋งใ€‘

2023. 9. 21. 07:46

๋ฌธ์ œ

 

1043๋ฒˆ: ๊ฑฐ์ง“๋ง

์ง€๋ฏผ์ด๋Š” ํŒŒํ‹ฐ์— ๊ฐ€์„œ ์ด์•ผ๊ธฐ ํ•˜๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•œ๋‹ค. ํŒŒํ‹ฐ์— ๊ฐˆ ๋•Œ๋งˆ๋‹ค, ์ง€๋ฏผ์ด๋Š” ์ง€๋ฏผ์ด๊ฐ€ ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ์ด์•ผ๊ธฐ๋ฅผ ํ•œ๋‹ค. ์ง€๋ฏผ์ด๋Š” ๊ทธ ์ด์•ผ๊ธฐ๋ฅผ ๋งํ•  ๋•Œ, ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์ง„์‹ค๋กœ ๋งํ•˜๊ฑฐ๋‚˜ ์—„์ฒญ๋‚˜๊ฒŒ

www.acmicpc.net

 

ํ’€์ด

1๏ธโƒฃ ํ”Œ๋กœ์ด๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•œ ํ’€์ด

๐Ÿ’ก ๋– ์˜ค๋ฅธ Idea

์ด ๋ฌธ์ œ๋Š” ํŒŒํ‹ฐ๋ณ„๋กœ ๋ฐ”๋กœ ์ฒดํฌ๋ฅผ ํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ์ด๊ณ , ๋ชจ๋“  ํŒŒํ‹ฐ์˜ ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌํ•œ ๋‹ค์Œ์— ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ ์ด์œ ๋Š”

์˜ˆ์ œ ์ฒ˜๋Ÿผ

4 5
1 1
1 1
1 2
1 3
1 4
2 4 1

์œ„์™€ ๊ฐ™์ด ์ฃผ์–ด์กŒ์„ ๋•Œ,
4๋ฒˆ์งธ ํŒŒํ‹ฐ์ธ
1 4
์—์„œ๋Š” 4๋ฒˆ์ด ์ง„์‹ค์„ ๋ชจ๋ฅผ๊ฒƒ ๊ฐ™์ง€๋งŒ

5๋ฒˆ์งธ ํŒŒํ‹ฐ์—์„œ ์ง„์‹ค์„ ์•„๋Š” 1๋ฒˆ์ด 4๋ฒˆ์—๊ฒŒ ์•Œ๋ ค ์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋”ฐ๋ผ์„œ, ์ˆœ์ฐจ์ ์œผ๋กœ ํŒ๋‹จํ•  ์ˆ˜ ์—†๋‹ค.

๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ์ „๋žต์€ ์ง€๋ฏผ์ด๋ฅผ 0๋ฒˆ์œผ๋กœ ๋‘๊ณ  ๋‚˜๋จธ์ง€ 1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ์˜ ์‚ฌ๋žŒ๋“ค์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ์ •์˜ํ•˜๊ณ 

์ง„์‹ค์„ ์•„๋Š” ๋ฒˆํ˜ธ์™€ ์ง€๋ฏผ์ด์˜ ๋ฒˆํ˜ธ์ธ 0 ๋ฒˆ์„ ๋จผ์ € ์—ฐ๊ฒฐํ•ด์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ , ๊ฐ ํŒŒํ‹ฐ๋ณ„๋กœ ๋งŒ๋‚˜๋Š” ์‚ฌ๋žŒ๋“ค ๊ฐ„์— ์—ฐ๊ฒฐ์„ ํ•ด์ค€๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ํ”Œ๋กœ์ด๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ  ์ง€๋ฏผ์ด์˜ ๋ฒˆํ˜ธ์ธ 0 ๋ฒˆ๊ณผ ๊ฑฐ๋ฆฌ์™€ ์ƒ๊ด€์—†์ด ์—ฐ๊ฒฐ๋˜๋Š” ๋…ธ๋“œ๋ผ๋ฉด ์ง„์‹ค์„ ์•Œ๊ฒŒ๋˜๋Š” ์‚ฌ๋žŒ์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํŒŒํ‹ฐ๋ณ„๋กœ ์ˆœํšŒํ•˜๋ฉด์„œ 0๋ฒˆ๊ณผ ์—ฐ๊ฒฐ๋œ ๋ฒˆํ˜ธ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์—†๋Š” ๊ฒฝ์šฐ์— ์นด์šดํŒ…ํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

 

public class Main {
    static final int MAX = 100;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String[] input = br.readLine().split(" ");
        int N = Integer.parseInt(input[0]);
        int M = Integer.parseInt(input[1]);

        // ์ง€๋ฏผ์ด ๋ฒˆํ˜ธ๋Š” 0 ์œผ๋กœ ๊ฐ€์ •
        int[][] graph = new int[N + 1][N + 1];

        for (int r = 0; r < N + 1; r++) {
            for (int c = 0; c < N + 1; c++) {
                if (r != c) {
                    graph[r][c] = MAX;
                }
            }
        }

        List<List<Integer>> parties = new ArrayList<>();

        input = br.readLine().split(" ");
        int numOfKnow = Integer.parseInt(input[0]);

        // ์ง„์‹ค์„ ์•„๋Š” ์‚ฌ๋žŒ์€ ์ง€๋ฏผ์ด ๋ฒˆํ˜ธ (0) ๊ณผ ์—ฐ๊ฒฐ
        for (int i = 1; i <= numOfKnow; i++) {
            graph[0][Integer.parseInt(input[i])] = 1;
            graph[Integer.parseInt(input[i])][0] = 1;
        }

        for (int i = 0; i < M; i++) {
            input = br.readLine().split(" ");
            List<Integer> party = new ArrayList<>();

            int numOfPeople = Integer.parseInt(input[0]);

            // ๊ฐ™์€ ํŒŒํ‹ฐ์— ์ฐธ์„ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค๋ผ๋ฆฌ ์—ฐ๊ฒฐ
            for (int j = 1; j <= numOfPeople; j++) {
                party.add(Integer.parseInt(input[j]));
                for (int k = j + 1; k <= numOfPeople; k++) {
                    graph[Integer.parseInt(input[j])][Integer.parseInt(input[k])] = 1;
                    graph[Integer.parseInt(input[k])][Integer.parseInt(input[j])] = 1;
                }
            }
            parties.add(party);
        }

        // ํ”Œ๋กœ์ด๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ
        for (int m = 0; m < N + 1; m++) {
            for (int u = 0; u < N + 1; u++) {
                for (int v = 0; v < N + 1; v++) {
                    graph[u][v] = Math.min(graph[u][v], graph[u][m] + graph[m][v]);
                }
            }
        }


        int ans = 0;

        // ์ง€๋ฏผ์ด ๋ฒˆํ˜ธ์ธ 0๋ฒˆ์—์„œ ํŠน์ • ๋ฒˆํ˜ธ๋กœ ๊ฐ€๋Š” ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•„์•ผ ์ง„์‹ค์„ ์•„๋Š” ์‚ฌ๋žŒ์ด ์—†๋Š” ํŒŒํ‹ฐ
        for (List<Integer> party : parties) {
            boolean flag = true;
            for (int num : party) {
                if (graph[0][num] != MAX) {
                    flag = false;
                    break;
                }
            }
            if (flag) {
                ans++;
            }
        }
        System.out.println(ans);
    }
}

 

๊ฒฐ๊ณผ

 

    '๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/๋ฐ”ํ‚น๋…' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [JAVA] ๋ฐฑ์ค€ 22856๋ฒˆ ใ€G4.ํŠธ๋ฆฌ ์ˆœํšŒใ€‘
    • [JAVA] ๋ฐฑ์ค€ 5214๋ฒˆ ใ€G2.ํ™˜์Šนใ€‘
    • [JAVA] ๋ฐฑ์ค€ 2617๋ฒˆ ใ€G4.๊ตฌ์Šฌ ์ฐพ๊ธฐใ€‘
    • [JAVA] ๋ฐฑ์ค€ 1707๋ฒˆ ใ€G4.์ด๋ถ„ ๊ทธ๋ž˜ํ”„ใ€‘
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”