Menu
CoddyTech

집합으로서의 딕셔너리

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

배열을 집합으로 바꾸려면 배열을 순회하면서 각 값을 키로 만드세요. 중복된 값은 같은 키에 저장됩니다:

var reports := ["spam", "scam", "spam"]
var banned := {}
for word in reports:
	banned[word] = true
print(banned.keys()) # ["spam", "scam"]

값이 멤버인지 확인하려면 has() 또는 in 연산자를 사용하세요. 딕셔너리에서는 둘 다 값이 아니라 키를 확인합니다:

print(banned.has("scam")) # true
print("hello" in banned) # false
print("hello" not in banned) # true

배열에도 has()가 있지만, 값과 요소를 하나씩 비교합니다. 딕셔너리는 키를 바로 찾으므로, 세트의 멤버십 검사는 멤버가 수천 개여도 빠릅니다.

세트를 순회하는 for 루프는 멤버가 추가된 순서대로 각 멤버를 살펴봅니다:

for word in banned:
	print(word) # spam, 그다음 scam
challenge icon

챌린지

쉬움

파티 입구에서 손님을 확인합니다. 프로그램은 두 줄의 입력을 읽습니다.

  1. 손님 목록: 공백으로 구분된 이름입니다. 일부 이름은 두 번 이상 적혀 있습니다.
  2. 도착하는 사람들: 공백으로 구분된 이름입니다.

손님 목록으로 guests 집합을 만듭니다. 목록에 있는 서로 다른 사람의 수를 출력한 다음, 도착하는 사람마다 한 줄씩 출력합니다. 목록에 있으면 NAME: welcome을, 목록에 없으면 NAME: not on the list를 출력합니다. 다음 입력의 경우:

mia leo ana mia
mia sam ana

출력은 다음과 같습니다.

Guests on the list: 3
mia: welcome
sam: not on the list
ana: welcome

직접 해보기

extends Node

func _ready():
	var guest_list := OS.read_string_from_stdin().split(" ", false)
	var arrivals := OS.read_string_from_stdin().split(" ", false)
	var guests := {}

	# 손님 집합을 만듭니다

	# 손님 수를 출력하고 각 도착자를 확인합니다
quiz icon실력 점검

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

논리와 흐름의 모든 레슨

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