본문 바로가기

카테고리 없음

백준 문제 2606번 바이러스

728x90

뻘짓


오늘은 뻘짓을 했다 ㅎㅎㅎ..

그 뻘짓은 아래의 코드를 보며 설명할 예정,,~~

 

이런 뻘짓을 한 이유는 내가 이해를 잘 못 했기 때문이 아닐지,,,, 

 

백준 문제 2606번 바이러스


#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdbool.h>

void Virus(int computerNum, int start);

int virusNum = 0;
bool Computers[101][101] = { false, };
int main() {
	int Number, PairNum;
	int Num1, Num2;
	scanf("%d%d", &Number, &PairNum);

	for (int i = 0; i < PairNum; i++) {
		scanf("%d%d", &Num1, &Num2);
		Computers[Num1][Num2] = true;
		Computers[Num2][Num1] = true;
	}
	
	Virus(Number, 1);

	printf("%d", virusNum);

	return 0;
}

bool visited[101] = { false, };
void Virus(int computerNum, int start) {

	visited[start] = true;

	for (int next = 1; next <= computerNum; next++) {
		if (visited[next]) { continue; }
		if (Computers[start][next] == false) { continue; }

		virusNum++;
		Virus(computerNum, next);
	}

}

위의 코드는 내가 짠 코드다.

 

내가 실수한 부분은 이 부분이다.

	for (int i = 0; i < PairNum; i++) {
		scanf("%d%d", &Num1, &Num2);
		Computers[Num1][Num2] = true;
		Computers[Num2][Num1] = true;
	}

데이터를 입력 받고 연결된 컴퓨터를 그래프로 표현해야하는데 난 그냥 아래와 같이 짰었다.

 

	for (int i = 0; i < PairNum; i++) {
		scanf("%d%d", &Num1, &Num2);
		Computers[Num1][Num2];
		Computers[Num2][Num1];
	}

어떻게 보면 이해를 못 했기도,,, 아니면 그냥 못 봤을 뿐인 실수이긴 한데,,

 

못 봤던 것이라면 결과를 보면서 눈치를 챘을 것 같다.

그런데 이 문제를 풀면서 그래프에 대한 개념이 잘 잡히지 않은 것 같다는 생각이 들었다.

 

그래프의 개념과 그것을 활용하는 알고리즘을 조금 더 이해하기 위해 노력해야겠다..!

 

후기


그래프의 개념을 잘 이해하자!

 

모두 홧팅!!!!!!

🤗