[알고리즘/백준] 5567번 : 결혼식(Java)

2025. 6. 5. 07:52·Algorithms & Education/알고리즘
문제 5567번 : 결혼식
문제링크 https://www.acmicpc.net/problem/5567
난이도 S2
언어 Java
분류 그래프 이론, 그래프 탐색, 너비 우선 탐색

 

 

📌 최종 정답 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class Main {
	public static void main(String args[]) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		// 동기 수 입력
		int n = Integer.parseInt(br.readLine());

		// 리스트의 길이 입력
		int m = Integer.parseInt(br.readLine());
		
		// 친구 관계 저장용 map (양방향)
		Map<Integer, Set<Integer>> friendMap = new HashMap<>();
		for (int i = 1; i <= n; i++) {
			friendMap.put(i, new HashSet<>());
		}
		
		// 친구 관계 입력 저장
		for (int i = 0; i < m; i++) {
			String[] input = br.readLine().split(" ");
			int a = Integer.parseInt(input[0]);
			int b = Integer.parseInt(input[1]);

			// 각 인덱스 : 사람 번호, 리스트 안에는 그 사람의 친구들이 삽입
			friendMap.get(a).add(b);
			friendMap.get(b).add(a); // 양방향
		}
		
		/* friendMap = {
			  1 : [2, 3],
			  2 : [1, 4],
			  3 : [1],
			  4 : [2],
			  5 : [],
			  6 : []  (예: n = 6일 경우)
			}
		 */

		// 상근이의 친구 (1단계)
		Set<Integer> invited = new HashSet<>(friendMap.get(1)); // invited = {2, 3}

		// 상근이의 친구의 친구 (2단계)
		for (int friend : friendMap.get(1)) { // 2, 3
			for (int ff : friendMap.get(friend)) { // 2 : 1, 4 | 3 : 1
				if (ff != 1) { // 상근이 제외
					invited.add(ff);
				}
			}
		}

		// 결혼식 초대 동기 수 출력
		bw.write(invited.size() + "\n");
		br.close();
		bw.flush();
		bw.close();
	}
}


📌 구해야 하는 정답

- 상근이의 결혼식에 초대하는 동기의 수를 출력


📌 코드 설계하기

1. 입력 

- 동기 수

- 리스트 길이

 

2. 친구 관계 저장

- Map<Integer, Set<Integer>>

friendMap = {
      1 : [2, 3],
      2 : [1, 4],
      3 : [1],
      4 : [2],
      5 : [],
      6 : []  (ex: n = 6일 경우)
}

- 1단계 : 상근이 친구

- 2단계 : 상근이 친구의 친구

 

3. 출력 - 결혼식 초대 동기 수

 

일부 친구 관계에서 상근이 친구의 친구가 먼저 입력될 경우를 정확히 반영하지 못하여 다시 풀이

'Algorithms & Education > 알고리즘' 카테고리의 다른 글

[알고리즘/백준] 2193번 : 이친수(Java)  (1) 2025.06.07
[알고리즘/백준] 2303번 : 숫자 게임(Java)  (4) 2025.06.06
[알고리즘/백준] 2204번 : 도비의 난독증 테스트(Java)  (1) 2025.06.04
[알고리즘/백준] 2644번 : 촌수계산(Java)  (1) 2025.06.03
[알고리즘/백준] 11724번 :연결 요소의 개수(Java)  (1) 2025.06.02
'Algorithms & Education/알고리즘' 카테고리의 다른 글
  • [알고리즘/백준] 2193번 : 이친수(Java)
  • [알고리즘/백준] 2303번 : 숫자 게임(Java)
  • [알고리즘/백준] 2204번 : 도비의 난독증 테스트(Java)
  • [알고리즘/백준] 2644번 : 촌수계산(Java)
min_sol
min_sol
  • min_sol
    ෆ스누피가 찰리찰리해ෆ
    min_sol
  • 전체
    오늘
    어제
    • 분류 전체보기 (243)
      • Programming Languages (51)
        • JAVA (40)
        • C# (11)
      • Database (11)
        • oracle (7)
        • postgresql (3)
        • mysql (0)
      • Data & AI (5)
        • 빅데이터 (1)
        • AI (4)
      • Tools & Collaboration (30)
        • GitHub (10)
        • RPA (20)
      • GIS (1)
      • Web Development (58)
        • Spring (11)
        • JSP (11)
        • Front (1)
        • Vue (14)
        • PyQt (10)
        • Next.js (4)
      • Networking & Security (14)
        • TCP_IP (5)
        • 보안 (9)
      • Mobile (6)
        • 안드로이드스튜디오 (6)
      • Others (4)
        • 일상 (2)
        • 2021 (2)
      • Algorithms & Education (58)
        • 알고리즘 (52)
        • 세미나 | 교육 (5)
        • 자격증 (1)
  • 블로그 메뉴

    • 홈
    • 글쓰기
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    spring
    jsp
    vue.js
    자동화
    RPA
    명품자바에센셜
    PyQt5
    스윙
    PyQt
    VUE
    Java
    알고리즘
    연습문제
    계산기
    자바
    이클립스
    백준
    생능출판
    코딩테스트
    자료구조
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
min_sol
[알고리즘/백준] 5567번 : 결혼식(Java)
상단으로

티스토리툴바