
https://school.programmers.co.kr/learn/courses/30/lessons/43162
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
dfs연습 문제
n개의 컴퓨터가 있을때 컴퓨터 끼리의 연결정보를 담은 2차원 배열이 주어진다.
그때 네트워크의 갯수를 구하는 문제이다.


자기 자신은 항상 0으로 주기 때문에 별다른 처리가 필요하지 않았다.
class Solution {
//[[1, 1, 0],
// [1, 1, 0],
// [0, 0, 1]]
int answer = 0;
public void dfs(int[][] computers, int[] visited, int num){
visited[num] = 1;
for(int i =0; i < computers[num].length;i++){
if(visited[i] == 0 && computers[num][i] == 1){
dfs(computers, visited, i);
}
}
}
public int solution(int n, int[][] computers) {
//각 컴퓨터는 0부터 n-1인 정수로 표현합니다.
//i번 컴퓨터와 j번 컴퓨터가 연결되어 있으면 computers[i][j]를 1로 표현합니다.
//computer[i][i]는 항상 1입니다.
int[] visited = new int[n];
for(int i =0; i< n; i++){
if(visited[i] == 0){
answer++;
dfs(computers, visited, i);
}
}
return answer;
}
}

다만
for(int i =0; i< n; i++){
if(visited[i] == 0){
answer++;
dfs(computers, visited, i);
}
}
에서 visited는 dfs함수에 전달된뒤 dfs함수내의 매개변수로서 수정한뒤 전달되어
메인함수에서는 visited처리가 안될줄 알고 많은 고민을 하였는데 처리가 되었다...
아직 java에대한 이해가 부족한 것인가 하며 찾아 보았는데
자바에서 배열은 객체로 참조의 형태를 가지기 때문에 참조가 복사가 되어 전달 된다.
따라서 내가 처음 생각한대로 처리하려면 Arrays.copyOf()를 사용해야한다!!!
반응형
'프로그래머스' 카테고리의 다른 글
| 99클럽 코테 스터디 14일차 TIL 섬연결하기 (서로소 집합) 자바(Java) (0) | 2024.04.11 |
|---|---|
| 프로그래머스99클럽 코테 스터디 13일차 TIL 이진 변환 반복하기(String문자열의 비교) (0) | 2024.04.10 |
| 프로그래머스 깊이/너비 우선 탐색(DFS/BFS) 타겟 넘버 - 자바(Java) (1) | 2024.04.09 |
| 99클럽 코테 스터디 12일차 TIL 덧칠하기 - 자바(Java) (0) | 2024.04.09 |
| 프로그래머스 최소직사각형 - 자바(Java) (0) | 2024.04.09 |