반응형
programmers.co.kr/learn/courses/30/lessons/43162#
코딩테스트 연습 - 네트워크
네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있
programmers.co.kr
어려운 문제는 아니였는데
for (int i = target+1; i < n; i++) {
if (computers[target][i] == 1 && target != i && visited[target][i] == 0) {
visited[target][i] = visited[i][target] = 1;
dfs(i, n, computers);
}
}
이렇게 해버려서 틀렸다.
dfs들어갈 때 찾는 기준을 N보다는 크게 하면 모든선을 다 연결할 수 있다고 생각해버림
[[1, 0, 1, 1, 0, 0], [0, 1, 0, 0, 1, 1], [1, 0, 1, 1, 1, 1], [1, 0, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1]]
이 반례가 있었다.... 이거로 해결!!
반례찾기가 너무 힘드네 ㅠㅠ
#include <string>
#include <vector>
using namespace std;
int map[202];
int cnt;
int visited[201][201];
void dfs(int target,int n, vector<vector<int>> computers) {
map[target] = cnt;
for (int i = 0; i < n; i++) {
if (computers[target][i] == 1 && target != i && visited[target][i] == 0) {
visited[target][i] = visited[i][target] = 1;
dfs(i, n, computers);
}
}
}
int solution(int n, vector<vector<int>> computers) {
int answer = 0;
cnt = 0;
for (int i = 0; i < n; i++) {
if (map[i] == 0) {
cnt++;
dfs( i, n, computers);
}
}
answer = cnt;
return answer;
}
반응형
'CS > 알고리즘' 카테고리의 다른 글
프로그래머스 42862 (0) | 2021.06.05 |
---|---|
프로그래머스 - 문자열 압축 (0) | 2021.04.12 |
백준 19236 청소년 상어 (dfs ,시뮬) _ again (0) | 2021.02.20 |
백준 20056 마법사 상어와 파이어볼 (시뮬) (0) | 2021.02.15 |
백준 20055 컨베이어 벨트 위의 로봇(시뮬) (0) | 2021.02.14 |