집합이란?
Coddy GDScript 여정의 논리와 흐름 섹션에 포함된 레슨. 78개 중 31번째.
집합은 고유한 값들의 모음입니다. 각 값은 한 번만 포함되거나 아예 포함되지 않습니다. 집합에 묻는 질문은 "이 값이 원소인가요?"입니다. 플레이어가 획득한 배지, 이미 방문한 레벨, 이미 사용 중인 사용자 이름은 집합입니다.
배열은 추가하는 모든 복사본을 유지합니다:
var pickups := ["sword", "shield", "sword"]
print(pickups.size()) # 3GDScript에는 Set 타입이 없습니다. 대신 딕셔너리를 사용합니다. 키는 고유하므로 키가 집합의 원소입니다. 값은 사용되지 않으며, 관례상 모든 값은 true입니다:
var items := {"sword": true, "shield": true}
items["sword"] = true # 이미 구성원임: 아무것도 바뀌지 않음
print(items.size()) # 2
print(items.keys()) # ["sword", "shield"]keys()는 멤버를 처음 추가된 순서대로 배열로 반환합니다. 빈 집합은 빈 딕셔너리인 {}입니다.
집합 리터럴은 각 원소를 한 번씩 나열합니다. {} 안에 같은 키를 두 번 쓰면 프로그램이 실행되기 전에 중단되는 오류가 발생합니다.
세트의 형식을 명시하려면 형식이 지정된 딕셔너리를 사용하세요: var badges: Dictionary[String, bool] = {}
챌린지
쉬움플레이어가 네 번의 경기를 치르고 각 경기에서 배지 하나를 획득했습니다. 같은 배지가 여러 번 나올 수 있습니다. 프로그램은 입력을 네 줄 읽으며, 각 줄에는 배지 이름이 하나씩 있습니다.
각 배지를 집합 badges에 추가한 다음, 서로 다른 배지의 개수와 집합의 원소를 배열로 출력하세요. 배지가 Sniper, Medic, Sniper, Builder일 때 출력은 다음과 같습니다.
Unique badges: 3
["Sniper", "Medic", "Builder"]직접 해보기
extends Node
func _ready():
var badges := {}
for i in range(4):
var badge := OS.read_string_from_stdin()
# 배지를 집합에 추가합니다
pass
# 배지의 개수와 배지들을 출력합니다
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리와 흐름의 모든 레슨
직접 연습해 보세요: 온라인 GDScript 컴파일러