๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ProgramSolve/Baekjoon

[BOJ] 13023๋ฒˆ - ABCDE (Java)

by SooooooooS 2024. 3. 1.
728x90

๐Ÿ› ๏ธ ๋ฌธ์ œ ๐Ÿ› ๏ธ


๐Ÿ—’๏ธ ์„ค๋ช… ๐Ÿ—’๏ธ

์˜ค๋Š˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์นœ๊ตฌ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„ ์‚ฌ๋žŒ A, B, C, D, E๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ๊ตฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.
- A๋Š” B์™€ ์นœ๊ตฌ๋‹ค.
- B๋Š” C์™€ ์นœ๊ตฌ๋‹ค.
- C๋Š” D์™€ ์นœ๊ตฌ๋‹ค.
- D๋Š” E์™€ ์นœ๊ตฌ๋‹ค.

์šฐ์„  ์—ฌ๊ธฐ์„œ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ N๋ช… ์ค‘ 5๋ช…์ด ์ด์™€ ๊ฐ™์€ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ๋œ๋‹ค.

์ด๋Ÿฌํ•œ ์นœ๊ตฌ ๊ด€๊ณ„๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰์„ ํ•˜์—ฌ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ž˜ํ”„์˜ ๊นŠ์ด๊ฐ€ 5์ด์ƒ์ผ ๊ฒฝ์šฐ ์œ„์™€ ๊ฐ™์€ ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

๋‹จ, ์ด๋Š” ํŒ๋ณ„๋งŒ ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๊ณ„๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด ๋ชจ๋“  ํƒ์ƒ‰์„ ๋ฉˆ์ถœ ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค.


๐Ÿ€ ํ’€์ด ๐Ÿ€

package Baekjoon;

import java.io.*;
import java.util.*;

public class DFS13023 {

    static ArrayList<Integer>[] friendship;
    static boolean[] visited;
    static boolean flag; //๊ฒฐ๊ณผ ํŒ๋ณ„ ๋ณ€์ˆ˜

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

        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());

        visited = new boolean[n];
        friendship = new ArrayList[n];
        for(int i = 0; i < n; i++) {
            friendship[i] = new ArrayList<>();
        }
        flag = false;

        for(int i = 0; i < m; i++) {
            st = new StringTokenizer(br.readLine());
            int x = Integer.parseInt(st.nextToken());
            int y = Integer.parseInt(st.nextToken());

            friendship[x].add(y);
            friendship[y].add(x);
        }

        for(int i = 0; i < n; i++) {
            visited[i] = true;
            dfs(i, 1);
            visited[i] = false;
            if(flag) { //์ด๋ฏธ ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ
                break;
            }
        }

        if(flag) {
            bw.write("1");
        }
        else {
            bw.write("0");
        }
        bw.flush();
        bw.close();
    }

    static void dfs(int c, int count) {
        if(count == 5) { //depth๊ฐ€ 5์ธ ๊ฒฝ์šฐ
            flag = true;
            return;
        }
        if(flag) { //์ด๋ฏธ ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ
            return;
        }
        for(int i : friendship[c]) {
            if(!visited[i]) {
                visited[i] = true;
                dfs(i, count + 1);
                visited[i] = false;
            }
        }
    }
}
728x90