1.1 집합과의 첫 만남
집합의 개념은 수학에서 프로그래밍으로 왔어. 집합은 고유한 요소들의 그룹이야. 이 특징 덕분에 집합은 프로그래밍에서 강력한 도구가 되고, 유니크한 기능들이 많지.
고유한 요소들의 그룹이 뭐냐고? "국내에서 가장 인기 있는 10대 이름 목록"을 상상해봐. 이 정의 자체가 목록의 각 이름이 고유하며 반복되지 않는다는 걸 의미해. 반복되는 것은 그 이름을 가진 사람들 뿐이지.
혹은 우표 컬렉션을 상상해봐. 각 나라에서 한 장씩 우표를 모으는 거야. 네 컬렉션은 각각의 우표가 고유하며, 두 개의 동일한 우표가 없는 집합이 되는 거야. 이게 바로 집합의 개념이지.
집합의 주요 특징들
고유성
집합은 고유한 객체들의 그룹이야. 너한테 전화해야 할 고객 번호 리스트가 있다고 상상해봐. 이 리스트에서 각 번호는 고유해야 하고, 반복되는 전화는 없어야 해.
순서 없음
집합은 순서에 신경 쓰지 않아. 이건 마치 과일을 바구니에 넣는 것과 같고, 무엇이 아래에 있고 위에 있는지 신경 쓰지 않는 거야. 중요한 것은 바구니 안의 모든 과일이 다르다는 거지.
변경 가능성
집합에 객체를 추가하거나 제거할 수 있어. 언제든지 바구니에 새로운 과일을 넣거나 필요 없는 과일을 뺄 수 있는 것과 같아.
1.2 집합 연산
집합은 큰 그룹의 요소로서 다양한 연산을 수행할 수 있어. 여기 4가지 대표적인 예가 있어:
- 합집합 (Union): 두 집합의 합집합 결과는 두 집합의 모든 고유한 요소를 포함해.
- 교집합 (Intersection): 두 집합의 교집합 결과는 두 집합에 공통적으로 존재하는 요소만 포함해.
- 차집합 (Difference): 두 집합의 차집합 결과는 첫 번째 집합에만 존재하고, 두 번째 집합에는 없는 요소들만 포함해.
- 대칭 차집합 (Symmetric Difference): 두 집합의 대칭 차집합 결과는 한 집합에는 존재하지만, 두 집합에는 동시에 존재하지 않는 요소들을 포함해.
여기 기억하기 좋은 그림이 있어:
합집합 (Union):
두 집합 A와 B의 합집합 결과는 두 집합 모두의 모든 고유한 요소를 포함해.
교집합 (Intersection):
두 집합의 교집합 결과는 모두에게 공통으로 존재하는 요소들만 포함해.
차집합 (Difference):
두 집합의 차집합 결과는 첫 번째 집합에만 존재하고, 두 번째 집합에는 없는 요소들만 포함해.
대칭 차집합 (Symmetric Difference):
두 집합의 대칭 차집합 결과는 한 집합에는 존재하지만, 두 집합에는 동시에 존재하지 않는 요소들을 포함해.
1.3 집합의 특징
집합은 그 특성뿐만 아니라 특정 연산 집합도 가지고 유명해.
고유한 컬렉션
유명인의 사인을 모으고 있다고 상상해봐. 너는 컬렉션의 각 사인이 고유하길 원해. 어차피 이미 사인이 있는 배우의 사인을 또 받을 필요 없어. 너의 사인 컬렉션은 고유한 사인들의 집합이지.
중복 제거
파티 손님 목록이 있고, 실수로 몇 명의 사람을 두 번 적었다고 가정해봐. 각 손님이 한 번만 초대되도록 하려면, 손님들의 집합을 만들면 돼. 이 집합에는 자동으로 고유한 이름만 남고 중복은 사라져.
존재 여부 확인
여러 종류의 보물을 모으는 게임을 하고 있다고 상상해봐. 각 상자에 몇 가지 보물 중 하나가 있을 수 있어. 이미 특정 보물을 발견했는지 알고 싶다면, 그냥 보물 집합에 있는지 확인하면 돼.
그룹 결합
학교와 스포츠 클럽에서 친구들이 있는 두 개의 목록이 있다고 상상해봐. 너가 아는 고유한 사람의 수를 알고 싶다면, 이 두 목록을 하나의 집합으로 합칠 수 있어. 이렇게 하면 고유한 친구들의 목록이 반복 없이 만들어져.
GO TO FULL VERSION