소토
소토의 기록하는 삶
소토
전체 방문자
오늘
어제
  • 분류 전체보기 (34)
    • Algorithm (34)
      • Problem (34)
    • Web (0)
    • ML & AI (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 문제
  • 직장인자기계발
  • 패스트캠퍼스후기
  • 한번에끝내는JavaSpring웹개발마스터초격차패키지Online
  • 패캠챌린지
  • 알고리즘
  • 백준
  • 코드스테이츠
  • 직장인인강
  • 패스트캠퍼스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
소토

소토의 기록하는 삶

Algorithm/Problem

[Programmers] 네트워크 - Java

2022. 2. 18. 12:32

 

Level 3

 

코딩테스트 연습 - 네트워크

네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있

programmers.co.kr

 

문제 풀이

DFS 문제

자기자신을 방문처리하고,

연결된 노드이면서 방문하지 않은 노드의 인덱스를 다시 재귀함수의 매개변수로 주어 모든 연결된 노드들을 dfs로 방문한다. 

재귀가 끝날 때마다 count(내 코드에선 answer변수)를 올려 네트워크의 개수를 센다.

 

코드

class Solution {
    public void dfs(int index, int[] visited, int[][] computers) {
        visited[index] = 1;

        for (int i=0; i<computers.length; i++) {
            if (visited[i] == 0 && computers[index][i] == 1 && index != i) {
                dfs(i, visited, computers);
            }
        }
    }

    public int solution(int n, int[][] computers) {
        int[] visited = new int[n];
        int answer = 0;

        for (int i=0; i<n; i++) {
            if (visited[i] == 0) {
                dfs(i, visited, computers);
                answer += 1;
            }
        }
        return answer;
    }
}
728x90
저작자표시 (새창열림)

'Algorithm > Problem' 카테고리의 다른 글

[Programmers] 여행 경로 - Java  (0) 2022.02.18
[Programmers] 단어 변환 - Java  (0) 2022.02.18
[Programmers] 타겟넘버 - Java  (0) 2022.02.17
[Baekjoon] 14499번 : 주사위 굴리기 - Python  (0) 2022.02.14
[Baekjoon] 21610번 : 마법사 상어와 비바라기 - Python  (0) 2022.02.11
    소토
    소토

    티스토리툴바