๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’ป Computer Science/- Data Structure, Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜ PS] ๋ฐฑ์ค€ 2606๋ฒˆ ๋ฐ”์ด๋Ÿฌ์Šค ์ž๋ฐ” ๋ฌธ์ œํ’€์ด

by Wonit 2021. 2. 24.

๋ฌธ์ œ

ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ๋ฐฑ์ค€์˜ 2606๋ฒˆ ๋ฐ”์ด๋Ÿฌ์Šค ์˜ ์ ‘๊ทผ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ ๊ธ€ ์ž…๋‹ˆ๋‹ค.
์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

2606๋ฒˆ: ๋ฐ”์ด๋Ÿฌ์Šค

์ฒซ์งธ ์ค„์—๋Š” ์ปดํ“จํ„ฐ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ปดํ“จํ„ฐ์˜ ์ˆ˜๋Š” 100 ์ดํ•˜์ด๊ณ  ๊ฐ ์ปดํ“จํ„ฐ์—๋Š” 1๋ฒˆ ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์ง์ ‘ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ปดํ“จํ„ฐ ์Œ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด

www.acmicpc.net

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๋จผ์ € ์ƒ๊ฐํ•ด๋ณด์ž.

๋ฌธ์ œ ์ ‘๊ทผ

์ด๋ฒˆ ๋ฌธ์ œ๋Š” ๋Œ€ํ‘œ์ ์ธ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ๋ฌธ์ œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.


๊ทธ ์ค‘์—์„œ ์—ฐ๊ฒฐ ์š”์†Œ ์ฐพ๊ธฐ์˜ ๋ฒ”์ฃผ์— ํ•ด๋‹น๋˜๋Š”๋ฐ, ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž.

 

์—ฐ๊ฒฐ ์š”์†Œ๋ฅผ ์ฐพ๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•์—๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  1. DFS
  2. BFS

 

์ด๋ฒˆ ๋ฌธ์ œ์—์„œ๋Š” DFS๋ณด๋‹ค๋Š” BFS๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๋”์šฑ ์ ํ•ฉํ•˜๋‹ค.

 

์ด๋ฒˆ ๋ฌธ์ œ์—์„œ๋Š” ํ•ญ์ƒ ์‹œ์ž‘ ๋…ธ๋“œ๋Š” 1๋ฒˆ ๋…ธ๋“œ์ด๊ณ  ๋” ์ด์ƒ ๊นŠ๊ฒŒ ๋“ค์–ด๊ฐˆ ํ•„์š” ์—†์ด, 1๋ฒˆ ๋…ธ๋“œ์™€ ์ธ์ ‘ํ•œ ๋…ธ๋“œ๋งŒ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค.


DFS๋Š” ํ˜„์žฌ ๋…ธ๋“œ์—์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ํ•œ์˜ ๊นŠ๊ฒŒ ํƒ์ƒ‰ํ•˜๋Š” ๊ตฌ์กฐ์ด๋ฏ€๋กœ dfs๋ณด๋‹ค ํ˜„์žฌ ๋…ธ๋“œ์™€ ์ธ์ ‘ํ•œ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋จผ์ € ํƒ์ƒ‰ํ•˜๋Š” bfs๊ฐ€ ๋”์šฑ ์ ํ•ฉํ•œ ๋ฌธ์ œ์˜€๋‹ค.

ํ•ด๊ฒฐ๋ฒ•

์šฐ์„  ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๊ณ , ํ๋ฅผ ์ด์šฉํ•œ bfs ๊ตฌํ˜„์„ ํ•˜์˜€๋‹ค.

์ •๋‹ต ์ฝ”๋“œ

public class Main {



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

        int n = Integer.parseInt(br.readLine());
        int v = Integer.parseInt(br.readLine());

        ArrayList<ArrayList<Integer>> graph = new ArrayList<>();
        boolean[] visited = new boolean[n + 1];

        for (int i = 0; i <= n; i++) {
            graph.add(new ArrayList<>());
        }

        while(v-- > 0) {
            String[] n1n2 = br.readLine().split(" ");
            graph.get(Integer.parseInt(n1n2[0])).add(Integer.parseInt(n1n2[1]));
            graph.get(Integer.parseInt(n1n2[1])).add(Integer.parseInt(n1n2[0]));
        }

        int answer = 0;

        Queue<Integer> queue = new LinkedList<>();

        queue.add(1);
        visited[1] = true;
        while(!queue.isEmpty()) {
            int x = queue.remove();
            for(int value : graph.get(x)) {
                if(!visited[value]) {
                    queue.add(value);
                    visited[value] = true;
                    answer++;
                }
            }
        }

        bw.write(String.valueOf(answer));
        bw.flush();
        bw.close();
    }
}

 

์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€