세트 만들기
Coddy Dart 여정의 로직 & 흐름 섹션에 포함된 레슨 — 65개 중 18번째.
이제 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을 생성할 수도 있지만, 중복된 값은 자동으로 제거되어 최종 컬렉션에는 고유한 요소만 남게 된다는 점을 기억하세요.
챌린지
쉬움블로그 포스트를 위한 고유 태그 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 형식으로 내용을 표시해야 합니다.
치트 시트
중괄호 {}를 사용하고 요소를 쉼표로 구분하여 Set을 생성합니다:
Set<String> colors = {'red', 'blue', 'green'};
print(colors); // {red, blue, green}빈 Set의 경우, 빈 Map과 구분하기 위해 명시적으로 타입을 선언하십시오:
Set<String> emptySet = <String>{}; // 빈 Set
Map<String, int> emptyMap = {}; // 빈 MapSet은 자동으로 중복된 값을 제거하며, 고유한 요소만 유지합니다.
직접 해보기
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리스트 정렬리스트 섞기요약 - 리스트 정리 도구