인프런 커뮤니티 질문&답변
part5 홍팀청팀 테스트케이스 오류
작성
·
21
·
수정됨
1
안녕하세요 강의 잘 듣고 있습니다.
해당 문제 테스트 케이스에 오류가 있는 것 같아 글 남깁니다!
연결된 네트워크 그룹이 여러 개일 때를 고려하지 않고 문제를 풀었는데 정답 처리 되었습니다..!
확인 부탁드립니다
감사합니다!
import java.util.*;
class Solution {
List<List<Integer>> graph;
public boolean solution(int[][] friends) {
graph = new ArrayList<>();
for (int i = 0; i < friends.length; i++) {
graph.add(new ArrayList<>());
}
for (int i = 0; i < friends.length; i++) {
for (int j = 0; j < friends[i].length; j++) {
graph.get(i).add(friends[i][j]);
graph.get(friends[i][j]).add(i);
}
}
return bfs(0);
}
private boolean bfs(int start) {
Queue<Integer> queue = new ArrayDeque<>();
queue.offer(start);
int[] team = new int[graph.size()];
Arrays.fill(team, -1);
team[start] = 0; // 시작 팀
while(!queue.isEmpty()) {
int cur = queue.poll();
for(int next : graph.get(cur)) {
if (team[next] == -1) { // 아직 미방문한 노드
team[next] = 1 - team[cur]; // 반대팀 배정
queue.offer(next);
} else if (team[next] == team[cur]) { // 방문한 노드가 같은 팀이면 false 반환
return false;
}
}
}
return true;
}
}
답변 1
0
개발남노씨
지식공유자
안녕하세요 asdfasdf님!!
문제의 의도 자체는 하나의 네트워크 그룹이 있을때를 가정한거라, asdfasdf님의 풀이는 맞습니다.
제가 문제에서 명확하게 명시를 못했네요.!
일단 코드 자체는 네트워크가 하나일 때 돌아가도록 잘 작성하셨습니다.
åsdfasdf님이 문제푼거에서 그친게 아니라 문제 자체의 조건등을 상세히 따져보고, 네트워크가 여러개일때는 어떻게되는거지? 나 그거 고려안했는데? 이렇게 더 한발 앞으로 나간 것 같아요.
제가 문제 조건을 더 촘촘히 넣지 못해서 발생한 혼란드려서 죄송합니다!
너무 잘하고 계세요!!
또 문제에서 누락된 조건등을 발견하면 편한게 질문주세요!




