세트 만들기
Coddy Dart 여정의 로직 & 흐름 섹션에 포함된 레슨. 65개 중 18번째.
이제 Set이 무엇인지 이해했으니, Set을 만드는 방법을 배워 봅시다. Dart에서는 수학 집합을 쓰는 것과 비슷하게, 요소를 쉼표로 구분하고 중괄호 {}를 사용해 Set을 만듭니다.
Set<String> colors = {'red', 'blue', 'green'};
print(colors); // {red, blue, green}이 구문을 Map을 만드는 것과 혼동하지 않는 것이 중요합니다. 둘 다 중괄호를 사용하지만, Set에는 값만 들어 있는 반면 Map에는 콜론으로 구분된 키-값 쌍이 들어 있습니다. 빈 Set은 빈 Map과 구별할 수 있도록 반드시 타입을 명시해 선언해야 합니다.
Set<String> emptySet = <String>{}; // 빈 Set
Map<String, int> emptyMap = {}; // 빈 Map중복 값이 있는 Set도 만들 수 있지만, 중복 항목은 자동으로 제거되어 최종 컬렉션에는 고유한 요소만 남는다는 점을 기억하세요.
이미 가지고 있는 목록에서 집합을 만들려면 toSet()을 호출하세요.
List<String> tags = ['dart', 'web', 'dart'];
Set<String> unique = tags.toSet();
print(unique); // {dart, web}챌린지
쉬움블로그 게시물의 고유한 태그로 Set을 만들어 블로그 태그 시스템을 관리하는 프로그램을 작성하세요. 프로그램은 다음을 수행해야 합니다.
- 블로그 게시물 제목을 나타내는 문자열 입력을 읽습니다.
- 게시물에 추가할 태그를 나타내는 여러 문자열 입력을 읽습니다(입력은
"done"을 받으면 끝납니다). - 고유한 태그를 저장할 문자열 Set을 만듭니다.
- 각 태그를 Set에 추가합니다(중복 항목은 자동으로 제거됩니다).
- 아래에 표시된 정확한 형식으로 블로그 태그 결과를 출력합니다.
예를 들어, 블로그 제목이 "Introduction to Dart Programming"이고 태그가 "programming", "dart", "tutorial", "programming", "beginner"라면 프로그램은 다음을 출력해야 합니다.
Blog Post: Introduction to Dart Programming
Tags added: [programming, dart, tutorial, programming, beginner]
Unique tags: {programming, dart, tutorial, beginner}
Total unique tags: 4
Status: Blog post tagged successfully블로그 제목이 "Web Development Tips"이고 태그가 "web", "html", "css", "web", "html", "javascript"라면 프로그램은 다음을 출력해야 합니다.
Blog Post: Web Development Tips
Tags added: [web, html, css, web, html, javascript]
Unique tags: {web, html, css, javascript}
Total unique tags: 4
Status: Blog post tagged successfully블로그 제목이 "Getting Started"이고 태그가 "guide", "basics"라면 프로그램은 다음을 출력해야 합니다.
Blog Post: Getting Started
Tags added: [guide, basics]
Unique tags: {guide, basics}
Total unique tags: 2
Status: Blog post tagged successfully프로그램은 태그 목록으로 Set을 만들고 Set이 중복 항목을 자동으로 제거하는 방식을 보여 주어야 합니다. 처음 입력된 내용을 보여 주기 위해 먼저 모든 입력 태그를 목록에 저장한 다음, 고유한 태그를 보여 주기 위해 Set을 만드세요. Set의 내용은 중괄호를 사용하는 표준 Set 형식으로 표시되어야 합니다.
직접 해보기
import 'dart:io';
void main() {
// 블로그 게시물 제목을 읽습니다
String? title = stdin.readLineSync();
// "done"이 입력될 때까지 태그를 읽습니다
List<String> allTags = [];
String? tag;
while ((tag = stdin.readLineSync()) != "done") {
if (tag != null) {
allTags.add(tag);
}
}
// TODO: 여기에 코드를 작성하세요
// 고유한 태그를 얻기 위해 태그 목록으로 Set을 만듭니다
// 고유한 태그의 총개수를 계산합니다
// 결과를 출력합니다
print("Blog Post: $title");
print("Tags added: $allTags");
// 고유한 태그를 Set 형식으로 출력합니다
// 고유한 태그의 총개수를 출력합니다
// 상태 메시지를 출력합니다
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
로직 & 흐름의 모든 레슨
1고급 리스트 조작
리스트 속성: first 및 last리스트 상태: isEmpty 및 isNotEmpty리스트 뒤집기리스트에 추가: insert리스트 요소 제거: removeWhere리스트에서 찾기: indexOf리스트 정렬리스트 섞기요약 - 리스트 정리 도구직접 연습해 보세요: 온라인 Dart 컴파일러