본문 바로가기
코딩테스트/JAVA

인접 행렬, 리스트를 활용한 BFS

by 임지혁코딩 2024. 9. 19.

인접 행렬

즉, 선이 많을때는 인접행렬을, 그렇지 않을때는 둘다 매우 많을때는 인접 리스트로 구현하자.

 

 이게, List로 배열을 만들어 쓰는 예시이다. 

 

public static int BFS(int [][]graph, int n)
    {
        Queue<Integer> q = new LinkedList<>();
        boolean [] visited = new boolean[n+1];
        int cnt = 1;
        q.add(1);
        visited[1] = true;
        
        while (!q.isEmpty())
        {
            int now = q.poll();
            
            for (int i = 1; i<n+1 ; i++)
            {
                if (graph[now][i] == 1 && visited[i] == false)
                {
                    q.add(i);
                    visited[i]=true;
                    cnt+=1;
                }
            }
        }
        
        
        return Math.abs(cnt*2 - n);
        
    }

 

이런 식으로. 

'코딩테스트 > JAVA' 카테고리의 다른 글

DP 팁  (0) 2024.10.10
투 포인터, 슬라이싱 윈도우  (1) 2024.09.28
특정 조건의 값(배열에 없는, 선택할 떄?) - 이진탐색  (1) 2024.09.13
문자열  (0) 2024.08.07
자바 문법 - 배열, 정렬, set  (2) 2024.07.24