Menu
Coddy logo textTech

요약 - 고유한 게스트 명단

Coddy Dart 여정의 로직 & 흐름 섹션에 포함된 레슨 — 65개 중 25번째.

challenge icon

챌린지

쉬움

두 개의 서로 다른 초대 소스에서 게스트 목록을 분석하여 이벤트 계획 시스템을 관리하는 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:

  1. 이벤트 이름을 나타내는 문자열 입력을 읽습니다.
  2. 첫 번째 초대 목록의 게스트를 나타내는 여러 문자열 입력을 읽습니다 (입력은 "list1_done"을 받으면 종료됩니다).
  3. 두 번째 초대 목록의 게스트를 나타내는 여러 문자열 입력을 읽습니다 (입력은 "list2_done"을 받으면 종료됩니다).
  4. 각 목록 내의 중복을 자동으로 처리하기 위해 두 게스트 목록을 Set으로 변환합니다.
  5. union() 메서드를 사용하여 이벤트에 초대된 모든 고유 게스트를 찾습니다.
  6. intersection() 메서드를 사용하여 두 초대 목록에 모두 포함된 게스트를 찾습니다.
  7. difference() 메서드를 사용하여 첫 번째 초대 목록에만 있는 게스트를 찾습니다.
  8. 아래에 표시된 정확한 형식으로 게스트 목록 분석 결과를 출력합니다.

예를 들어, 이벤트 이름이 "Birthday Party"이고, 첫 번째 목록에 "Alice", "Bob", "Charlie", "Diana"가 포함되어 있고, 두 번째 목록에 "Bob", "Diana", "Eve", "Frank"가 포함되어 있다면 프로그램은 다음과 같이 출력해야 합니다:

Event: Birthday Party
First invitation list: {Alice, Bob, Charlie, Diana}
Second invitation list: {Bob, Diana, Eve, Frank}
All unique guests: {Alice, Bob, Charlie, Diana, Eve, Frank}
Guests on both lists: {Bob, Diana}
Guests only on first list: {Alice, Charlie}
Total unique guests: 6
Duplicate invitations: 2
First list only: 2
Status: Guest list analysis completed

이벤트 이름이 "Wedding Reception"이고, 첫 번째 목록에 "John", "Mary", "Sarah"가 포함되어 있고, 두 번째 목록에 "Tom", "Lisa", "Mike"가 포함되어 있다면 프로그램은 다음과 같이 출력해야 합니다:

Event: Wedding Reception
First invitation list: {John, Mary, Sarah}
Second invitation list: {Tom, Lisa, Mike}
All unique guests: {John, Mary, Sarah, Tom, Lisa, Mike}
Guests on both lists: {}
Guests only on first list: {John, Mary, Sarah}
Total unique guests: 6
Duplicate invitations: 0
First list only: 3
Status: Guest list analysis completed

이벤트 이름이 "Company Meeting"이고, 첫 번째 목록에 "Alex", "Jordan", "Taylor", "Morgan", "Alex"가 포함되어 있고, 두 번째 목록에 "Jordan", "Taylor", "Casey", "Jordan"이 포함되어 있다면 프로그램은 다음과 같이 출력해야 합니다:

Event: Company Meeting
First invitation list: {Alex, Jordan, Taylor, Morgan}
Second invitation list: {Jordan, Taylor, Casey}
All unique guests: {Alex, Jordan, Taylor, Morgan, Casey}
Guests on both lists: {Jordan, Taylor}
Guests only on first list: {Alex, Morgan}
Total unique guests: 5
Duplicate invitations: 2
First list only: 2
Status: Guest list analysis completed

프로그램은 세 가지 집합 연산을 모두 보여주어야 합니다: 모든 게스트를 합치는 union(), 두 목록에 모두 나타나는 게스트를 찾는 intersection(), 첫 번째 목록에만 있는 게스트를 찾는 difference(). 개별 목록 내의 중복을 처리하기 위해 먼저 입력 목록을 Set으로 변환한 다음, 집합 연산을 수행하여 게스트 분포를 분석하세요.

직접 해보기

import 'dart:io';

void main() {
  // 이벤트 이름 읽기
  String? eventName = stdin.readLineSync();
  
  // 첫 번째 초대 명단 읽기
  List<String> firstList = [];
  String? input;
  while ((input = stdin.readLineSync()) != "list1_done") {
    if (input != null) {
      firstList.add(input);
    }
  }
  
  // 두 번째 초대 명단 읽기
  List<String> secondList = [];
  while ((input = stdin.readLineSync()) != "list2_done") {
    if (input != null) {
      secondList.add(input);
    }
  }
  
  // 리스트를 세트(Set)로 변환
  Set<String> firstSet = firstList.toSet();
  Set<String> secondSet = secondList.toSet();
  
  // TODO: 아래에 코드를 작성하세요
  // union(), intersection(), difference() 메서드를 사용하여 게스트 명단을 분석하세요
  // 모든 고유 게스트, 양쪽 명단에 모두 있는 게스트, 첫 번째 명단에만 있는 게스트를 계산하세요
  
  // 결과를 요구된 형식으로 출력
  print("Event: $eventName");
  print("First invitation list: $firstSet");
  print("Second invitation list: $secondSet");
  // 여기에 나머지 출력 문을 추가하세요
}

로직 & 흐름의 모든 레슨