합집합과 교집합
Coddy Swift 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 19번째.
두 개의 컬렉션이 포함된 멤버십 질문을 할 때 세트(Set)는 그 진가를 발휘합니다.
let a: Set = [1, 2, 3, 4]
let b: Set = [3, 4, 5, 6]union은 양쪽의 모든 요소를 반환합니다:
a.union(b) // {1, 2, 3, 4, 5, 6}intersection은 양쪽 모두에 포함된 요소만 반환합니다:
a.intersection(b) // {3, 4}각 메서드는 새로운 Set을 반환합니다. 원본 세트는 변경되지 않은 상태로 유지됩니다. 결과에 대한 반복 순서는 보장되지 않으므로, 출력하기 전에 정렬하십시오.
챌린지
쉬움두 줄의 입력을 읽습니다. 각 줄은 쉼표로 구분된 정수 목록입니다.
이들을 집합 a와 b로 취급합니다. 두 줄을 출력하세요:
- 오름차순으로 정렬되고
,로 연결된 교집합 (비어 있는 경우 빈 줄 출력) - 오름차순으로 정렬되고
,로 연결된 합집합
첫 번째 줄에 1,2,3,4, 두 번째 줄에 3,4,5,6이 입력으로 주어지면, 출력은 다음과 같습니다:
3,4
1,2,3,4,5,6치트 시트
Swift에서의 집합(Set) 연산:
let a: Set = [1, 2, 3, 4]
let b: Set = [3, 4, 5, 6]
a.union(b) // {1, 2, 3, 4, 5, 6} - 두 집합 중 어느 한 곳에라도 있는 요소들
a.intersection(b) // {3, 4} - 두 집합 모두에 있는 요소들두 메서드 모두 새로운 Set을 반환하며, 원본은 변경되지 않습니다. 순회 순서가 보장되지 않으므로 출력하기 전에 정렬하십시오.
직접 해보기
let a = Set(readLine()!.components(separatedBy: ",").map { Int($0)! })
let b = Set(readLine()!.components(separatedBy: ",").map { Int($0)! })
// TODO: 교집합 정렬 후 결합, 합집합 정렬 후 결합
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.