백준 5567 결혼식 (Java,자바)

jonghyukLee·2022년 7월 18일
0

이번에 풀어본 문제는
백준 5567번 결혼식 입니다.

📕 문제 링크

❗️코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
    static List<List<Integer>> friends;
    static boolean [] isVisited;
    static int N,M;
    static int answer;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        N = Integer.parseInt(br.readLine());
        friends = new ArrayList<>();
        isVisited = new boolean[N + 1];

        for (int i = 0; i <= N; i++) friends.add(new ArrayList<>());

        M = Integer.parseInt(br.readLine());
        StringTokenizer st;
        for (int i = 0; i < M; i++) {
            st = new StringTokenizer(br.readLine());
            int fst = Integer.parseInt(st.nextToken());
            int sec = Integer.parseInt(st.nextToken());

            friends.get(fst).add(sec);
            friends.get(sec).add(fst);
        }

        // 상근이의 친구
        Queue<Integer> q = new LinkedList<>();

        isVisited[1] = true;
        for (int friend : friends.get(1)) {
            if (!isVisited[friend]) {
                isVisited[friend] = true;
                answer++;
                q.add(friend);
            }
        }

        while(!q.isEmpty()) {
            int next = q.poll();
            for (int friend : friends.get(next)) {
                if (!isVisited[friend]) {
                    isVisited[friend] = true;
                    answer++;
                }
            }
        }
        System.out.print(answer);
    }
}

📝 풀이

상근이가 결혼식에 친구와 친구의 친구까지만 초대한다고 했을 때, N명의 학생 중 초대받을 수 있는 학생 수를 출력하는 문제입니다.
입력된 친구관계를 리스트에 담아주고, 첫 번째로 상근이의 친구를 큐에 담고, 친구의 친구까지만 초대할 수 있으므로 그 친구들의 친구까지만 체크하며 카운트값을 올려주면 해결할 수 있습니다.

📜 후기

친구의 친구까지라서 생각보다 간단했던 문제입니다.

profile
머무르지 않기!

0개의 댓글