요약 - 고유한 게스트 명단
Coddy Dart 여정의 로직 & 흐름 섹션에 포함된 레슨 — 65개 중 25번째.
챌린지
쉬움두 개의 서로 다른 초대 소스에서 게스트 목록을 분석하여 이벤트 계획 시스템을 관리하는 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:
- 이벤트 이름을 나타내는 문자열 입력을 읽습니다.
- 첫 번째 초대 목록의 게스트를 나타내는 여러 문자열 입력을 읽습니다 (입력은
"list1_done"을 받으면 종료됩니다). - 두 번째 초대 목록의 게스트를 나타내는 여러 문자열 입력을 읽습니다 (입력은
"list2_done"을 받으면 종료됩니다). - 각 목록 내의 중복을 자동으로 처리하기 위해 두 게스트 목록을 Set으로 변환합니다.
union()메서드를 사용하여 이벤트에 초대된 모든 고유 게스트를 찾습니다.intersection()메서드를 사용하여 두 초대 목록에 모두 포함된 게스트를 찾습니다.difference()메서드를 사용하여 첫 번째 초대 목록에만 있는 게스트를 찾습니다.- 아래에 표시된 정확한 형식으로 게스트 목록 분석 결과를 출력합니다.
예를 들어, 이벤트 이름이 "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");
// 여기에 나머지 출력 문을 추가하세요
}로직 & 흐름의 모든 레슨
1고급 리스트 조작
리스트 속성: first 및 last리스트 상태: isEmpty 및 isNotEmpty리스트 뒤집기리스트에 추가: insert리스트 요소 제거: removeWhere리스트에서 찾기: indexOf리스트 정렬리스트 섞기요약 - 리스트 정리 도구