🌞Algorithm/🔥programmers

[programmers] 네트워크

뿌야._. 2026. 7. 15. 20:23
문제
https://school.programmers.co.kr/learn/courses/30/lessons/43162
 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 


< 네트워크 >

 

문제 풀이 (Java)

import java.util.*;

class Solution {
	public int solution(int n, int[][] computers) {
		int answer = 0;

		boolean visited[] = new boolean[n];

		for (int i = 0; i < n; i++) {
			if (!visited[i]) {
				answer += 1;
				visited[i] = true;
				bfs(i, computers, visited);
			}
		}

		return answer;
	}

	private void bfs(int idx, int[][] computers, boolean[] visited) {
		Queue<Integer> queue = new LinkedList<>();
		queue.add(idx);

		while (!queue.isEmpty()) {
			int num = queue.poll();

			for (int i = 0; i < computers.length; i++) {
				if (num == i) {
					continue;
				}
				if (computers[num][i] == 1 && !visited[i]) {
					visited[i] = true;
					queue.add(i);
				}
			}
		}
	}
}

 

모든 컴퓨터를 탐색하며 아직 네트워크가 이뤄지지 않은 컴퓨터라면 네트워크 추가, 방문 표시, bfs 함수를 호출한다. 최종 answer을 반환한다.

 

bfs 함수에서는 Queue에 시작 컴퓨터 번호를 저장한 후 Queue가 빌 때까지 다음 과정을 반복한다.

1. queue poll

2. 현재 컴퓨터에서 연결된 컴퓨터 중 아직 네트워크를 이루지 않은 컴퓨터가 있는지 확인한 후, 있다면 방문 표시 및 queue에 저장한다.

 



 

출처: 프로그래머스 코딩 테스트 연습, 
https://school.programmers.co.kr/learn/challenges

'🌞Algorithm > 🔥programmers' 카테고리의 다른 글

[programmers] 타겟 넘버  (0) 2026.07.14
[programmers] 게임 맵 최단거리  (0) 2026.07.13
[programmers] 폰켓몬  (0) 2026.07.03
[programmers] 미로 탈출  (0) 2026.07.01
[programmers] 숫자 변환하기  (0) 2026.06.30