강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

asdfasdf님의 프로필 이미지
asdfasdf

작성한 질문수

2026 코딩테스트 올인원 [JAVA]

[문제풀이] 홍팀청팀

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님이 문제푼거에서 그친게 아니라 문제 자체의 조건등을 상세히 따져보고, 네트워크가 여러개일때는 어떻게되는거지? 나 그거 고려안했는데? 이렇게 더 한발 앞으로 나간 것 같아요.
제가 문제 조건을 더 촘촘히 넣지 못해서 발생한 혼란드려서 죄송합니다!

너무 잘하고 계세요!!

 

또 문제에서 누락된 조건등을 발견하면 편한게 질문주세요!

asdfasdf님의 프로필 이미지
asdfasdf

작성한 질문수

질문하기