Menu
CoddyTech

2D 배열과 중첩 반복문

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

2D 배열의 모든 셀을 방문하려면 루프 하나를 다른 루프 안에 넣으세요. 바깥쪽 루프는 행을 순회하고, 안쪽 루프는 현재 행의 셀을 순회합니다:

var grid := [[1, 2, 3], [4, 5, 6]]
var total := 0
for row in grid:
	for cell in row:
		total += cell
print(total) # 21

각 셀의 위치가 필요할 때는 인덱스를 반복문으로 순회하세요. r은 행 인덱스이고, c는 열 인덱스이며, 내부 반복문은 현재 행의 길이인 grid[r].size()를 사용합니다:

for r in range(grid.size()):
	for c in range(grid[r].size()):
		grid[r][c] *= 10
print(grid) # [[10, 20, 30], [40, 50, 60]]

for cell in row 루프에서 cell에 값을 할당해도 그리드는 변경되지 않습니다. cell에는 숫자의 복사본이 들어 있기 때문입니다. 위에서처럼 인덱스를 통해 셀을 변경하세요.

중첩 루프는 격자도 만듭니다. 바깥쪽 루프 안에서 새 행을 만들고, 안쪽 루프에서 채운 다음, 추가하세요:

var town := []
for r in range(3):
	var row := []
	for c in range(4):
		row.append(".")
	town.append(row)
town[1][2] = "P"
for row in town:
	print("".join(row))
....
..P.
....

행은 바깥쪽 루프 안에서 만들어야 합니다. 배열을 추가할 때 배열은 복사되지 않고 공유됩니다. 같은 row를 세 번 추가하면 세 행은 하나의 배열이며, town[1][2] = "P"를 실행하면 모든 행에 P가 들어갑니다.

challenge icon

챌린지

쉬움

마을 지도를 그리세요. 프로그램은 한 줄에 하나씩 네 개의 정수를 읽습니다. 행의 수, 열의 수, 플레이어의 행, 플레이어의 열입니다. 플레이어 위치는 항상 지도 안에 있습니다.

  1. grid를 만드세요. 지정된 수의 행과 열로 이루어진 2차원 배열이며, 모든 셀은 "."입니다. 중첩 루프를 사용하고, 각 행마다 새 행 배열을 만드세요.
  2. 플레이어 위치의 셀을 "P"로 설정하세요.
  3. 셀 사이에 공백을 넣지 말고, 한 줄에 한 행씩 지도를 출력하세요.

입력이 3, 4, 1, 2일 때 출력은 다음과 같습니다.

....
..P.
....

직접 해보기

extends Node

func _ready():
	var rows := int(OS.read_string_from_stdin())
	var cols := int(OS.read_string_from_stdin())
	var player_row := int(OS.read_string_from_stdin())
	var player_col := int(OS.read_string_from_stdin())
	var grid := []

	# 중첩 반복문으로 격자를 만듭니다

	# 플레이어를 맵에 배치합니다

	# 맵을 출력합니다
	pass
quiz icon실력 점검

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

논리와 흐름의 모든 레슨

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