Menu
CoddyTech

집합의 차집합

Coddy GDScript 여정의 논리와 흐름 섹션에 포함된 레슨. 78개 중 35번째.

두 집합의 차집합에는 첫 번째 집합에는 있지만 두 번째 집합에는 없는 원소가 들어 있습니다. 첫 번째 집합을 순회하면서 두 번째 집합에 없는 원소를 남기세요:

var needed := {"rope": true, "torch": true, "map": true}
var packed := {"torch": true, "apple": true}
var missing := {}
for item in needed:
	if not packed.has(item):
		missing[item] = true
print(missing.keys()) # ["rope", "map"]

집합의 순서가 중요합니다. packed와 needed의 차집합은 ["apple"]입니다. 즉, 챙겼지만 필요하지 않았던 것입니다.

두 차이를 합치면 대칭 차집합이 됩니다. 즉, 두 집합 중 정확히 하나에만 포함된 원소들입니다. 여기서는 rope, map, apple입니다.

누락된 항목이 없는지 확인하기 위해 has_all()은 배열을 받아 배열의 모든 요소가 딕셔너리의 키일 때 true를 반환합니다:

print(packed.has_all(needed.keys())) # false: rope와 map이 없습니다
challenge icon

챌린지

쉬움

여행을 떠나기 전에 필요한 물건과 챙긴 물건을 비교합니다. 프로그램은 공백으로 구분된 두 줄, 즉 필요한 물건과 챙긴 물건을 읽고, 시작 코드에서 집합 needed와 packed를 만듭니다.

항목을 , 로 연결해 두 줄을 출력합니다.

  • Missing: 뒤에 챙기지 않은 필요한 물건을 출력합니다.
  • Extra: 뒤에 필요하지 않은 챙긴 물건을 출력합니다.

순회하는 집합의 순서를 유지하세요. 빈 목록 대신 none을 출력하세요. 입력이 다음과 같을 때:

rope torch map
torch apple

출력은 다음과 같습니다.

Missing: rope, map
Extra: apple

직접 해보기

extends Node

func _ready():
	var needed := {}
	for item in OS.read_string_from_stdin().split(" ", false):
		needed[item] = true
	var packed := {}
	for item in OS.read_string_from_stdin().split(" ", false):
		packed[item] = true

	# 두 차집합을 만듭니다

	# 결과를 출력합니다
quiz icon실력 점검

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

논리와 흐름의 모든 레슨

직접 연습해 보세요: 온라인 GDScript 컴파일러