반응형

[JAVA] 백준 13023번 - ABCDE

 

import java.io.*;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Main {

    static boolean[] visited;   //방문여부를 체크하는 배열
    static ArrayList<Integer>[] graph;  //친구 관계를 담을 리스트배열
    static boolean result = false;

    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());

        graph = new ArrayList[N];
        visited = new boolean[N];


        for (int i = 0; i < N; i++) {   //리스트 배열 초기화
            graph[i] = new ArrayList<Integer>();
        }

        for (int j = 0; j < M; j++) {   //각각의 사람이 어떤 친구관계를 가지고 있는지 넣어줌
            st = new StringTokenizer(br.readLine());
            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());

            graph[a].add(b);
            graph[b].add(a);

        }

        for (int i = 0; i < N; i++) {
            if (result == false) {
                dfs(0, i);
            }
        }

        if (result) {
            bw.write("1");
        } else {
            bw.write("0");
        }

        bw.flush();
        bw.close();

    }

    private static void dfs(int depth, int visitedIdx) {    //서로 이어지는 친구관계가 4개인지 확인

        if (depth == 4) {
            result = true;
            return;
        }

        visited[visitedIdx] = true;
        for (int i = 0; i < graph[visitedIdx].size(); i++) {
            if (visited[graph[visitedIdx].get(i)] == false) {
                dfs(depth + 1, graph[visitedIdx].get(i));
            }
        }
        visited[visitedIdx] = false;

    }

}

 

정답을 맞춘 풀이방법

1. 그래프를 표현하기 위해 ArrayList<>[] 배열을 사용하여 값을 초기화함. ArrayList<ArrayList<>()> 구조로도 사용가능

2. a, b 가 친구인경우 a.add(b), b.add(a) 처럼 각각 친구 관계를 추가함

3. 그래프를 DFS(깊이우선탐색)방법으로 이어진 친구 관계가 4인 경우를 탐색하고 결과 출력함

반응형

'알고리즘 > 백준 문제[추후 옮길예정]' 카테고리의 다른 글

[JAVA][그래프] 백준 1260번  (0) 2021.09.07
[JAVA] [그래프] 백준 11724번  (0) 2021.09.07
[JAVA] 백준 15664번  (0) 2021.07.26
[JAVA] 백준 15663번  (0) 2021.07.26
[JAVA] 백준 15657번  (0) 2021.07.26

+ Recent posts