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()은 중복을 방지하면서 관련 컬렉션을 결합하는 데 매우 적합합니다. 예를 들어 기술 집합을 병합하거나, 사용자 권한을 결합하거나, 여러 소스의 데이터를 통합할 수 있습니다.

both 집합에 모두 나타나는 요소를 찾으려면 intersection() 메서드를 사용하세요. 공유되는 요소만 포함하는 새로운 집합을 반환합니다:

Set<String> sharedSkills = frontendSkills.intersection(backendSkills);
print(sharedSkills);  // {JavaScript}

겹치는 요소 집합이 있으면 join() 메서드를 사용하여 이를 읽을 수 있는 문자열로 변환할 수 있습니다. 이는 List에서와 같은 방식으로 작동합니다. 지정한 구분 기호를 사용하여 모든 요소를 하나의 문자열로 결합합니다.

Set<String> overlap = frontendSkills.intersection(backendSkills);
String result = overlap.isEmpty ? 'None' : overlap.join(', ');
print(result);  // JavaScript

union(), intersection(), join()을 함께 사용하면 집합 데이터를 비교하고 표시하는 강력한 도구를 활용할 수 있습니다. 예를 들어 팀의 기술 집합을 결합하고 팀들이 이미 공유하는 기술을 파악할 수 있습니다.

challenge icon

챌린지

쉬움

서로 다른 팀원의 기술 세트를 결합하여 종합적인 Project 기술 프로필을 만드는 전문 네트워킹 시스템을 관리하는 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다.

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

예를 들어 Project 이름이 "Web Development Project"이고, 첫 번째 member의 기술이 "HTML", "CSS", "JavaScript", "React"이며, 두 번째 member의 기술이 "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

Project 이름이 "Mobile App Development"이고, 첫 번째 member의 기술이 "Dart", "Flutter", "Firebase"이며, 두 번째 member의 기술이 "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

Project 이름이 "Data Science Project"이고, 첫 번째 member의 기술이 "Python", "Pandas", "NumPy", "SQL"이며, 두 번째 member의 기술이 "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() method를 사용하여 중복 항목을 자동으로 처리하는 방법을 보여 주어야 합니다. 먼저 각 개별 기술 세트를 표시한 다음 결합된 결과를 표시하세요. 두 원본 세트에 모두 나타나는 기술을 찾아 겹치는 기술을 식별하세요. 겹치는 기술이 없으면 겹치는 기술 줄에 "None"을 표시하세요.

직접 해보기

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() 메서드를 사용하여 두 스킬 세트를 결합하세요
  // Find overlapping skills between the two sets
  // Calculate total unique skills
  
  // 결과를 필요한 형식으로 출력하세요
  print("Project: $projectName");
  print("Team Member 1 skills: $member1Skills");
  print("Team Member 2 skills: $member2Skills");
  // Print combined skills, total count, overlapping skills, and status
}
quiz icon실력 점검

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

로직 & 흐름의 모든 레슨

직접 연습해 보세요: 온라인 Dart 컴파일러