[BOJ/๋ฐฑ์ค€] 13023 ABCDE(JAVA)

2025. 2. 12. 09:20ยท๐Ÿ’ช Algorithm
๋ฐ˜์‘ํ˜•

๋งํฌ

https://www.acmicpc.net/problem/13023

 

๋ฌธ์ œ ์š”์•ฝ

0๋ฒˆ~N-1๋ฒˆ ์‚ฌ๋žŒ ์ค‘ ์•„๋ž˜์™€ ๊ฐ™์€ ์นœ๊ตฌ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„ ์‚ฌ๋žŒ A, B, C, D, E๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ๊ตฌํ•˜๊ธฐ

  • A๋Š” B์™€ ์นœ๊ตฌ๋‹ค.
  • B๋Š” C์™€ ์นœ๊ตฌ๋‹ค.
  • C๋Š” D์™€ ์นœ๊ตฌ๋‹ค.
  • D๋Š” E์™€ ์นœ๊ตฌ๋‹ค.

 

์ œํ•œ

  • ์ฒซ์งธ ์ค„์— ์‚ฌ๋žŒ์˜ ์ˆ˜ N, ์นœ๊ตฌ ๊ด€๊ณ„์˜ ์ˆ˜ M
    • 5 ≤ N ≤ 2000
    • 1 ≤ M ≤ 2000
  • ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ M๊ฐœ์˜ ์ค„์—๋Š” ์ •์ˆ˜ a์™€ b๊ฐ€ ์ฃผ์–ด์ง€๋ฉฐ, a์™€ b๊ฐ€ ์นœ๊ตฌ๋ผ๋Š” ๋œป์ด๋‹ค.
    • 0 ≤ a, b ≤ N-1, a ≠ b
    • ๊ฐ™์€ ์นœ๊ตฌ ๊ด€๊ณ„๊ฐ€ ๋‘ ๋ฒˆ ์ด์ƒ ์ฃผ์–ด์ง€๋Š” ๊ฒฝ์šฐ๋Š” X
  • ๋ฌธ์ œ์˜ ์กฐ๊ฑด์— ๋งž๋Š” A, B, C, D, E๊ฐ€ ์กด์žฌํ•˜๋ฉด 1์„ ์—†์œผ๋ฉด 0์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

๊ฒฝ๋กœ์˜ ํŠน์ง•์„ ์ €์žฅํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๋กœ, DFS๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ชจ๋“  ์ •์ ์— ๋Œ€ํ•ด dfs๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
    1. ์‹œ์ž‘์ ์€ `cnt`(์นœ๊ตฌ ์ˆ˜) ๊ฐ’์ด 1์ด๋‹ค.
  2. dfs๋Š” ์‹œ์ž‘ ์ •์ ์„ ๊ธฐ์ค€์œผ๋กœ ์นœ๊ตฌ ๊ด€๊ณ„๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ฉฐ dfs ํ•จ์ˆ˜๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ํ˜ธ์ถœํ•œ๋‹ค.
    1. ์žฌ๊ท€ ํ˜ธ์ถœํ•  ๋•Œ `cnt`(์นœ๊ตฌ ์ˆ˜) ๊ฐ’์„ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
    2. ํ˜ธ์ถœํ•˜๊ธฐ ์ „, ํ•ด๋‹น ์ •์  ๋ฐฉ๋ฌธ ์—ฌ๋ถ€๋ฅผ ํ‘œ์‹œํ•œ๋‹ค.(๊ฒน์น˜์ง€ ์•Š๋Š” A, B, C, D, E๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด)
    3. ์žฌ๊ท€ ํ˜ธ์ถœ์ด ๋๋‚œ ์‹œ์ ์—๋Š” ๋ฐฉ๋ฌธ ์—ฌ๋ถ€๋ฅผ ๋‹ค์‹œ `false`๋กœ ํ‘œ์‹œํ•œ๋‹ค.
      1. 0,1,2,3๊นŒ์ง€ ์‹œ๋„ํ–ˆ๋Š”๋ฐ ์‹คํŒจํ–ˆ๋‹ค๋ฉด ๋‹ค์Œ์œผ๋กœ 0,1,2,4 ์ด๋Ÿฐ ์‹์œผ๋กœ ์‹œ๋„ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.
  3. ๋งŒ์•ฝ `cnt` ๊ฐ’์ด 5๊ฐ€ ๋˜๋ฉด, ์กฐ๊ฑด์— ๋งž๋Š” ์นœ๊ตฌ ๊ด€๊ณ„๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Œ์„ ํ‘œ์‹œํ•˜๊ณ  ํƒ์ƒ‰์„ ์ข…๋ฃŒํ•œ๋‹ค.
  4. ๋งŒ์•ฝ ์•„์ง ์›ํ•˜๋Š” ์นœ๊ตฌ ๊ด€๊ณ„๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด ๋‹ค๋ฅธ ์‹œ์ž‘ ์ •์ ์„ ๊ธฐ์ค€์œผ๋กœ 2 ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

์ฝ”๋“œ

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

public class Main {
    static int N, M;
    static boolean findFlag;
    static ArrayList<Integer>[] edges; 
    static boolean[] visited;

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

       N = Integer.parseInt(st.nextToken());
       M = Integer.parseInt(st.nextToken());
       edges = new ArrayList[N];
       visited = new boolean[N];

       for(int i=0; i<N; i++){
           edges[i] = new ArrayList<>();
       }

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

            int first = Integer.parseInt(st.nextToken());
            int second = Integer.parseInt(st.nextToken());

            edges[first].add(second);
            edges[second].add(first);
       }

       for(int i=0; i<N; i++){
           if(!findFlag){ // ์•„์ง ์กฐ๊ฑด์— ๋งž๋Š” ์นœ๊ตฌ ๊ด€๊ณ„๋ฅผ ์ฐพ์ง€ ๋ชป ํ–ˆ์œผ๋ฉด ํƒ์ƒ‰
               dfs(i,1);
           }
       }
       System.out.println(findFlag ? 1 : 0);
    }

    static void dfs(int start, int cnt) {
        if(cnt == 5){ // ์กฐ๊ฑด์— ๋งž๋Š” ์นœ๊ตฌ 5๋ช…์„ ์ฐพ์œผ๋ฉด ๋
            findFlag = true;
            return;
        }
        visited[start] = true;
        for(int next: edges[start]){
            if(!visited[next]){
                dfs(next, cnt+1);
            }
        }
        visited[start]=false;
    }
}

 

๐Ÿท ์‹œ๊ฐ„ ๋ณต์žก๋„

  • `N`: ์ •์ ์˜ ์ˆ˜
  • `M`: ๊ฐ„์„ ์˜ ์ˆ˜
  • DFS๋Š” ๊ฐ ์ •์ ์„ ํ•œ ๋ฒˆ์”ฉ ๋ฐฉ๋ฌธํ•˜๊ณ , ๊ฐ ๊ฐ„์„ ์„ ํ•œ ๋ฒˆ์”ฉ ํƒ์ƒ‰ํ•˜๋ฏ€๋กœ `O(N + M)`
  • ์ตœ์ข… ์‹œ๊ฐ„ ๋ณต์žก๋„: `O(N + M)`

๐Ÿท ์‹คํ–‰ ์†๋„

Time: 232 ms, Memory: 21980 KB

๋ฐ˜์‘ํ˜•

'๐Ÿ’ช Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ/๋ฐฑ์ค€] 2597 ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ(JAVA)  (2) 2025.02.14
[BOJ/๋ฐฑ์ค€] 1010 ๋‹ค๋ฆฌ ๋†“๊ธฐ (JAVA)  (1) 2025.02.13
[BOJ/๋ฐฑ์ค€] 2178 ๋ฏธ๋กœ ํƒ์ƒ‰(JAVA)  (1) 2025.02.11
[BOJ/๋ฐฑ์ค€] 1931 ํšŒ์˜์‹ค ๋ฐฐ์ •(JAVA)  (1) 2025.02.10
'๐Ÿ’ช Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [BOJ/๋ฐฑ์ค€] 2597 ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ(JAVA)
  • [BOJ/๋ฐฑ์ค€] 1010 ๋‹ค๋ฆฌ ๋†“๊ธฐ (JAVA)
  • [BOJ/๋ฐฑ์ค€] 2178 ๋ฏธ๋กœ ํƒ์ƒ‰(JAVA)
  • [BOJ/๋ฐฑ์ค€] 1931 ํšŒ์˜์‹ค ๋ฐฐ์ •(JAVA)
dev-heyjin
dev-heyjin
  • dev-heyjin
    ๊ฐœ๋ฐœ ๊ธฐ๋ก
    dev-heyjin
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (56)
      • ๐ŸŽฏ Programming (8)
      • ๐Ÿ’ช Algorithm (16)
      • โš™๏ธ CS (31)
        • ๋„คํŠธ์›Œํฌ (15)
        • ์šด์˜์ฒด์ œ (15)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ํ•ดํ‚น
    RDS
    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    DB
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
dev-heyjin
[BOJ/๋ฐฑ์ค€] 13023 ABCDE(JAVA)
์ƒ๋‹จ์œผ๋กœ

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