합집합
Coddy Dart 여정의 로직 & 흐름 섹션에 포함된 레슨 — 65개 중 22번째.
두 개의 별개 Set 컬렉션이 있을 때, union() 메서드를 사용하여 두 컬렉션의 모든 고유 요소를 포함하는 단일 세트로 결합할 수 있습니다. 이 작업은 원래 세트 중 하나에 나타나는 모든 요소를 포함하는 새로운 세트를 생성합니다.
union() 메서드는 중복을 자동으로 처리합니다. 두 집합에 동일한 요소가 존재하는 경우, 결과 합집합에는 한 번만 나타나며, 집합이 고유한 값만을 포함한다는 기본 속성을 유지합니다.
Set<String> frontendSkills = {'HTML', 'CSS', 'JavaScript'};
Set<String> backendSkills = {'JavaScript', 'Python', 'SQL'};
Set<String> allSkills = frontendSkills.union(backendSkills);
print(allSkills); // {HTML, CSS, JavaScript, Python, SQL}'JavaScript'가 두 원본 집합 모두에 나타나지만 합집합 결과에는 한 번만 나타나는 점에 주목하세요. 이는 union()을 기술 스택 병합, 사용자 권한 결합 또는 여러 소스의 데이터 통합과 같이 중복을 방지하면서 관련 컬렉션을 결합하는 데 완벽한 도구로 만들어 줍니다.
intersection() 메서드를 사용하여 두 세트가 공유하는 요소만 찾을 수도 있습니다. 이는 두 세트 모두에 나타나는 요소만 포함하는 새로운 세트를 반환합니다.
Set<String> frontendSkills = {'HTML', 'CSS', 'JavaScript'};
Set<String> backendSkills = {'JavaScript', 'Python', 'SQL'};
Set<String> sharedSkills = frontendSkills.intersection(backendSkills);
print(sharedSkills); // {JavaScript}세트의 요소를 읽기 쉬운 하나의 문자열로 표시하려면 join() 메서드를 사용하세요. 각 요소 사이에 배치할 구분자 문자열을 전달할 수 있습니다.
Set<String> sharedSkills = {'JavaScript'};
print(sharedSkills.join(', ')); // JavaScript
Set<String> allSkills = {'HTML', 'CSS', 'JavaScript', 'Python', 'SQL'};
print(allSkills.join(', ')); // HTML, CSS, JavaScript, Python, SQL챌린지
쉬움서로 다른 팀원들의 기술 세트를 결합하여 종합적인 프로젝트 기술 프로필을 생성하는 전문적인 네트워킹 시스템 관리 프로그램을 작성하세요. 프로그램의 요구 사항은 다음과 같습니다:
- 프로젝트 이름을 나타내는 문자열 입력을 읽습니다.
- 첫 번째 팀원의 기술을 나타내는 여러 문자열 입력을 읽습니다 (입력은
"member1_done"을 받으면 종료됩니다). - 두 번째 팀원의 기술을 나타내는 여러 문자열 입력을 읽습니다 (입력은
"member2_done"을 받으면 종료됩니다). - 각 팀원의 기술을 저장하기 위해 두 개의 별도 Set을 생성합니다.
union()메서드를 사용하여 두 기술 세트를 종합적인 프로젝트 기술 프로필로 결합합니다.- 아래에 표시된 정확한 형식으로 기술 결합 결과를 출력합니다.
예를 들어, 프로젝트 이름이 "Web Development Project"이고, 첫 번째 팀원의 기술이 "HTML", "CSS", "JavaScript", "React"이며, 두 번째 팀원의 기술이 "JavaScript", "Node.js", "MongoDB", "React"인 경우, 프로그램은 다음과 같이 출력해야 합니다:
Project: Web Development Project
Team Member 1 skills: {HTML, CSS, JavaScript, React}
Team Member 2 skills: {JavaScript, Node.js, MongoDB, React}
Combined project skills: {HTML, CSS, JavaScript, React, Node.js, MongoDB}
Total unique skills available: 6
Overlapping skills: JavaScript, React
Status: Project skill profile created successfully프로젝트 이름이 "Mobile App Development"이고, 첫 번째 팀원의 기술이 "Dart", "Flutter", "Firebase"이며, 두 번째 팀원의 기술이 "Swift", "iOS", "Xcode"인 경우, 프로그램은 다음과 같이 출력해야 합니다:
Project: Mobile App Development
Team Member 1 skills: {Dart, Flutter, Firebase}
Team Member 2 skills: {Swift, iOS, Xcode}
Combined project skills: {Dart, Flutter, Firebase, Swift, iOS, Xcode}
Total unique skills available: 6
Overlapping skills: None
Status: Project skill profile created successfully프로젝트 이름이 "Data Science Project"이고, 첫 번째 팀원의 기술이 "Python", "Pandas", "NumPy", "SQL"이며, 두 번째 팀원의 기술이 "Python", "SQL", "Tableau", "Statistics"인 경우, 프로그램은 다음과 같이 출력해야 합니다:
Project: Data Science Project
Team Member 1 skills: {Python, Pandas, NumPy, SQL}
Team Member 2 skills: {Python, SQL, Tableau, Statistics}
Combined project skills: {Python, Pandas, NumPy, SQL, Tableau, Statistics}
Total unique skills available: 6
Overlapping skills: Python, SQL
Status: Project skill profile created successfully프로그램은 union() 메서드를 사용하여 두 기술 세트를 결합해야 하며, 중복이 자동으로 처리되는 방식을 보여주어야 합니다. 먼저 개별 기술 세트를 보여준 다음 결합된 결과를 보여주세요. 두 원본 세트에 모두 나타나는 기술을 찾아 중복되는 기술(overlapping skills)을 식별하세요. 중복되는 기술이 없으면 중복 기술 행에 "None"을 표시하세요.
치트 시트
union() 메서드는 두 개의 세트를 두 세트의 모든 고유한 요소를 포함하는 단일 세트로 결합합니다:
Set<String> frontendSkills = {'HTML', 'CSS', 'JavaScript'};
Set<String> backendSkills = {'JavaScript', 'Python', 'SQL'};
Set<String> allSkills = frontendSkills.union(backendSkills);
print(allSkills); // {HTML, CSS, JavaScript, Python, SQL}union() 메서드는 중복을 자동으로 처리합니다. 동일한 요소가 두 세트에 모두 존재하는 경우, 결과 세트에는 한 번만 나타납니다.
intersection() 메서드는 양쪽 세트에 모두 존재하는 요소만 포함하는 새로운 세트를 반환합니다:
Set<String> commonSkills = frontendSkills.intersection(backendSkills);
print(commonSkills); // {JavaScript}join() 메서드는 모든 요소를 연결하여 세트를 String으로 변환하며, 선택적으로 구분자를 사용할 수 있습니다:
print(allSkills.join(', ')); // HTML, CSS, JavaScript, Python, SQL직접 해보기
import 'dart:io';
void main() {
// 프로젝트 이름 읽기
String? projectName = stdin.readLineSync();
// 첫 번째 팀원의 기술 읽기
Set<String> member1Skills = <String>{};
String? skill;
while ((skill = stdin.readLineSync()) != "member1_done") {
if (skill != null) {
member1Skills.add(skill);
}
}
// 두 번째 팀원의 기술 읽기
Set<String> member2Skills = <String>{};
while ((skill = stdin.readLineSync()) != "member2_done") {
if (skill != null) {
member2Skills.add(skill);
}
}
// TODO: 아래에 코드를 작성하세요
// union() 메서드를 사용하여 두 기술 집합을 결합하세요
// 두 집합 간의 중복되는 기술을 찾으세요
// 총 고유 기술 수를 계산하세요
// 필요한 형식으로 결과 출력
print("Project: $projectName");
print("Team Member 1 skills: $member1Skills");
print("Team Member 2 skills: $member2Skills");
// 결합된 기술, 총 개수, 중복 기술 및 상태를 출력하세요
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
로직 & 흐름의 모든 레슨
1고급 리스트 조작
리스트 속성: first 및 last리스트 상태: isEmpty 및 isNotEmpty리스트 뒤집기리스트에 추가: insert리스트 요소 제거: removeWhere리스트에서 찾기: indexOf리스트 정렬리스트 섞기요약 - 리스트 정리 도구