Menu
Coddy logo textTech

세트 생성하기

Coddy Swift 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 18번째.

Set은 고유한 값들의 정렬되지 않은 컬렉션입니다. 모든 멤버의 요소 타입이 동일해야 하며, 중복이 허용되지 않고, 예측 가능한 반복 순서가 없습니다.

var colors: Set<String> = ["red", "green", "blue", "red"]
print(colors.count)              // 3 (중복된 "red"는 삭제됨)

타입 어노테이션 Set<String>은 리터럴 형식에서 필수입니다. 왜냐하면 ["a", "b"] 그 자체로는 Array로 추론되기 때문입니다.

세 가지 핵심 연산: contains, insert, 그리고 remove. 뒤의 두 연산은 변경 사항이 유의미했는지에 대한 정보를 반환합니다.

colors.insert("yellow")         // 추가함
colors.insert("red")            // 이미 존재함, 효과 없음
colors.contains("green")        // true
colors.remove("blue")           // "blue"를 반환하거나 없으면 nil을 반환함

배열에서 세트(Set)를 생성하면 한 단계로 중복이 제거됩니다:

let unique = Set([1, 2, 2, 3, 3, 3])
// 3 elements, exact order not guaranteed
challenge icon

챌린지

초급

한 줄의 입력을 읽습니다: 쉼표로 구분된 단어 목록(중복이 있을 수 있음).

세 줄을 출력합니다:

  1. 고유한 단어의 개수 (Set 사용)
  2. 알파벳 순으로 정렬되고 ,로 연결된 고유한 단어들
  3. 입력에 swift라는 단어가 포함되어 있으면 true, 그렇지 않으면 false (contains 사용)

입력 swift,ruby,go,swift,go,rust에 대한 출력은 다음과 같습니다:

4
go,ruby,rust,swift
true

치트 시트

Set – 고유한 값들의 순서 없는 컬렉션입니다. 배열 리터럴 구문을 사용할 때는 타입 어노테이션이 필요합니다:

var colors: Set<String> = ["red", "green", "blue", "red"]
print(colors.count) // 3 (중복 제거됨)

핵심 연산:

colors.insert("yellow")      // 요소를 추가함
colors.contains("green")     // true
colors.remove("blue")        // "blue"를 반환하거나 없으면 nil을 반환함

중복을 제거하기 위해 배열로부터 세트를 생성합니다:

let unique = Set([1, 2, 2, 3, 3, 3]) // 3개의 요소

직접 해보기

let words = readLine()!.components(separatedBy: ",")

// TODO: Set을 통해 중복 제거, 개수 출력, 정렬 후 결합, "swift" 포함 여부 확인
quiz icon실력 점검

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

로직 및 흐름의 모든 레슨