Menu
Coddy logo textTech

합집합

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
challenge icon

챌린지

쉬움

서로 다른 팀원들의 기술 세트를 결합하여 종합적인 프로젝트 기술 프로필을 생성하는 전문적인 네트워킹 시스템 관리 프로그램을 작성하세요. 프로그램의 요구 사항은 다음과 같습니다:

  1. 프로젝트 이름을 나타내는 문자열 입력을 읽습니다.
  2. 첫 번째 팀원의 기술을 나타내는 여러 문자열 입력을 읽습니다 (입력은 "member1_done"을 받으면 종료됩니다).
  3. 두 번째 팀원의 기술을 나타내는 여러 문자열 입력을 읽습니다 (입력은 "member2_done"을 받으면 종료됩니다).
  4. 각 팀원의 기술을 저장하기 위해 두 개의 별도 Set을 생성합니다.
  5. union() 메서드를 사용하여 두 기술 세트를 종합적인 프로젝트 기술 프로필로 결합합니다.
  6. 아래에 표시된 정확한 형식으로 기술 결합 결과를 출력합니다.

예를 들어, 프로젝트 이름이 "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");
  // 결합된 기술, 총 개수, 중복 기술 및 상태를 출력하세요
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

로직 & 흐름의 모든 레슨