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];
}
어떻게 보면 이해를 못 했기도,,, 아니면 그냥 못 봤을 뿐인 실수이긴 한데,,
못 봤던 것이라면 결과를 보면서 눈치를 챘을 것 같다.
그런데 이 문제를 풀면서 그래프에 대한 개념이 잘 잡히지 않은 것 같다는 생각이 들었다.
그래프의 개념과 그것을 활용하는 알고리즘을 조금 더 이해하기 위해 노력해야겠다..!
후기
그래프의 개념을 잘 이해하자!
모두 홧팅!!!!!!
🤗