Menu
Coddy logo textTech

세트 요소 추가 및 삭제

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

Set을 생성한 후에는, 새로운 요소를 추가하거나 기존 요소를 제거하여 그 내용을 수정해야 할 때가 많습니다. add()remove() 메서드는 세트의 요소를 관리하는 간단한 방법을 제공합니다.

add() 메서드는 세트에 새로운 요소를 삽입하려고 시도합니다. 하지만 세트는 고유한 값만 저장하기 때문에, 이미 존재하는 요소를 추가하려고 하면 메서드는 아무런 작업도 수행하지 않습니다. 즉, 오류는 발생하지 않으며 세트는 변경되지 않은 상태로 유지됩니다.

Set<String> usernames = {'alice', 'bob', 'charlie'};

usernames.add('diana');     // 'diana'를 성공적으로 추가합니다
usernames.add('alice');     // 아무 작업도 하지 않음 - 'alice'가 이미 존재합니다

print(usernames);  // {alice, bob, charlie, diana}

remove() 메서드는 삭제하려는 값을 가져와서 세트(set)에서 제거하는 방식으로 작동합니다. 요소가 세트에 존재하지 않으면 메서드는 아무 작업도 수행하지 않으므로, 먼저 확인하지 않고도 안전하게 사용할 수 있습니다.

usernames.remove('bob');        // 'bob'을 삭제합니다
usernames.remove('unknown');    // 아무 작업도 하지 않음 - 요소를 찾을 수 없음

print(usernames);  // {alice, charlie, diana}
challenge icon

챌린지

쉬움

새로운 팀원을 추가하고 프로젝트 팀에서 비활성 팀원을 제거하여 팀 협업 시스템을 관리하는 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다:

  1. 프로젝트 이름을 나타내는 문자열 입력을 읽습니다.
  2. 초기 팀원을 나타내는 여러 문자열 입력을 읽습니다 (입력은 "initial_done"을 받으면 종료됩니다).
  3. 추가할 새 팀원을 나타내는 여러 문자열 입력을 읽습니다 (입력은 "add_done"을 받으면 종료됩니다).
  4. 제거할 팀원을 나타내는 여러 문자열 입력을 읽습니다 (입력은 "remove_done"을 받으면 종료됩니다).
  5. 초기 팀원들로 Set을 생성합니다.
  6. add() 메서드를 사용하여 각 새 팀원을 팀에 추가합니다.
  7. remove() 메서드를 사용하여 지정된 각 팀원을 팀에서 제거합니다.
  8. 아래에 표시된 정확한 형식으로 팀 관리 결과를 출력합니다.

예를 들어, 프로젝트 이름이 "Mobile App Development"이고, 초기 팀원이 "Alice", "Bob", "Charlie"이며, 추가할 새 팀원이 "Diana", "Alice", "Eve"이고, 제거할 팀원이 "Bob", "Frank"인 경우, 프로그램은 다음과 같이 출력해야 합니다:

Project: Mobile App Development
Initial team: {Alice, Bob, Charlie}
Adding new members: [Diana, Alice, Eve]
After adding members: {Alice, Bob, Charlie, Diana, Eve}
Removing members: [Bob, Frank]
Final team: {Alice, Charlie, Diana, Eve}
Team size: 4
Status: Team updated successfully

프로젝트 이름이 "Website Redesign"이고, 초기 팀원이 "John", "Sarah"이며, 추가할 새 팀원이 "Mike", "John"이고, 제거할 팀원이 "Sarah", "Unknown"인 경우, 프로그램은 다음과 같이 출력해야 합니다:

Project: Website Redesign
Initial team: {John, Sarah}
Adding new members: [Mike, John]
After adding members: {John, Sarah, Mike}
Removing members: [Sarah, Unknown]
Final team: {John, Mike}
Team size: 2
Status: Team updated successfully

프로젝트 이름이 "Data Analysis"이고, 초기 팀원이 "Emma"이며, 추가할 새 팀원이 "Tom", "Lisa"이고, 제거할 팀원이 "Emma"인 경우, 프로그램은 다음과 같이 출력해야 합니다:

Project: Data Analysis
Initial team: {Emma}
Adding new members: [Tom, Lisa]
After adding members: {Emma, Tom, Lisa}
Removing members: [Emma]
Final team: {Tom, Lisa}
Team size: 2
Status: Team updated successfully

프로그램은 이미 존재하는 팀원을 추가하려고 할 때 add() 메서드가 아무 작업도 수행하지 않으며, 존재하지 않는 팀원을 제거하려고 할 때 remove() 메서드가 아무 작업도 수행하지 않음을 보여주어야 합니다. 시도된 작업을 보여주기 위해 입력 리스트를 저장한 다음, 각 작업 후의 Set 내용을 표시하여 Set의 고유한 특성을 증명하세요.

치트 시트

add()를 사용하여 Set에 요소를 삽입합니다. 요소가 이미 존재하면 아무 일도 일어나지 않습니다:

Set<String> usernames = {'alice', 'bob', 'charlie'};

usernames.add('diana');     // 'diana'를 성공적으로 추가합니다
usernames.add('alice');     // 아무 일도 일어나지 않음 - 'alice'가 이미 존재함

print(usernames);  // {alice, bob, charlie, diana}

remove()를 사용하여 Set에서 요소를 삭제합니다. 요소가 존재하지 않으면 아무 일도 일어나지 않습니다:

usernames.remove('bob');        // 'bob'을 삭제합니다
usernames.remove('unknown');    // 아무 일도 일어나지 않음 - 요소를 찾을 수 없음

print(usernames);  // {alice, charlie, diana}

직접 해보기

import 'dart:io';

void main() {
  // 프로젝트 이름 읽기
  String? projectName = stdin.readLineSync();
  
  // 초기 팀 구성원 읽기
  List<String> initialMembers = [];
  String? member;
  while ((member = stdin.readLineSync()) != "initial_done") {
    initialMembers.add(member!);
  }
  
  // 추가할 새 구성원 읽기
  List<String> membersToAdd = [];
  while ((member = stdin.readLineSync()) != "add_done") {
    membersToAdd.add(member!);
  }
  
  // 제거할 구성원 읽기
  List<String> membersToRemove = [];
  while ((member = stdin.readLineSync()) != "remove_done") {
    membersToRemove.add(member!);
  }
  
  // TODO: 아래에 코드를 작성하세요
  // 초기 팀 구성원으로 Set 생성
  // add() 메서드를 사용하여 새 구성원 추가
  // remove() 메서드를 사용하여 구성원 제거
  
  // 필요한 형식으로 결과 출력
  print("Project: $projectName");
  // 여기에 나머지 출력 문을 추가하세요
}
quiz icon실력 점검

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

로직 & 흐름의 모든 레슨