관리 메뉴

기억을 위한 기록들

[프로그래머스 lv2] 네트워크 - c++ 본문

Coding Test - cpp/BFS

[프로그래머스 lv2] 네트워크 - c++

에드윈H 2021. 2. 16. 14:39

programmers.co.kr/learn/courses/30/lessons/43162

 

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

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

programmers.co.kr

#include<iostream>
#include <string>
#include <vector>
#include <queue>

using namespace std;
bool check[201];
int solution(int n, vector<vector<int>> computers) {
	int answer = 0;

	queue<pair<int, int>> q;


	for (int index = 0; index < n; index++)
	{
		if(check[index + 1])
			continue;

		q.push({ index,0 });
		check[index + 1 ] = true;

		answer++;
		while (!q.empty())
		{
			int curValueX = q.front().first;
			int curValueY = q.front().second;

			q.pop();

			for (int i = 0; i < computers[curValueX].size(); i++)
			{
				if (computers[curValueX][i] == 1 && check[i + 1] == false)
				{
					check[i + 1] = true;
					q.push({ i, 0 });
				}


			}
		}
	}
	return answer;
}