Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

행복한 개구리

C++ Tutorial - Arrays / Multi-Dimensional Arrays 본문

C++/공부내용

C++ Tutorial - Arrays / Multi-Dimensional Arrays

HappyFrog 2022. 6. 23. 00:42


 

 

 

C++ 다차원 배열

다차원 배열은 배열들의 배열입니다.

 

다차원 배열을 선언하기 위해서는 변수 타입을 정해주고,  주 배열이 요소의 수를 지정할 대괄호와 그 앞에 배열의 이름을 정해주어야 합니다. 그 뒤에있는 두 번째 대괄호에는 부 배열이 얼마나 많은 요소를 갖는지 정해주어야 합니다.

 

string letters[2][4];

 

보통의 배열이라면 당신이 { "문", "자", "배", "열" }과 같은 배열을 넣어줄 수 있습니다. 하지만 다차원 배열에서는 배열의 각 요소가 또 다른 배열이어야 합니다.

 

string letters[2][4] = {
		{"A", "B", "C", "D"},
		{"E", "F", "G", "H"}
	};

 

배열 선언에서의 각 대괄호는 배열에 또 다른 차원을 더해줍니다. 위 예시에서 보여주는 배열은 2차원을 가져야한다고 말해줍니다.

 

배열은 몇 차원이던 될 수 있습니다. 배열이 고차원이 될 수록 코드는 더욱 복잡해집니다. 아래의 배열은 3차원입니다.

 

string letters[2][2][2] = 
	{
		{
			{"A", "B"},
			{"C", "D"}
		},
		{
			{"E", "F"},
			{"G", "H"}
		}
	};

 

 

 


다차원 배열의 요소에 접근하기

다차원 배열의 요소에 접근하기 위해서는 각 차원의 인덱스를 지정해줘야 합니다.

 

아래 예시에서의 선언문은 letters 배열의 첫번째 열 ( 0 ) 세번째 행( 2 ) 에 있는 요소를 출력합니다.

 

 

예시

#include <iostream>

using namespace std;

int main() {
	string letters[2][4] = {
		{"A", "B", "C", "D"},
		{"E", "F", "G", "H"}
	};

	cout << letters[0][2];
}

 

 

 


다차원 배열에서 요소 변경하기

다차원 배열에서 요소의 값을 변경하려면 각 차원의 인덱스를 호출해야 합니다:

 

 

예시

#include <iostream>

using namespace std;

int main() {
	string letters[2][4] = {
		{"A", "B", "C", "D"},
		{"E", "F", "G", "H"}
	};
	letters[0][0] = "Z";
	cout << letters[0][0];
}

 

 

 


다차원 배열을 통하는 반복문

다차원 배열을 통하는 반복문을 실행하려면 배열의 각 차원들마다 반복을 해줘야 합니다.

 

아래에 있는 예시는 letters 배열의 모든 요소를 출력합니다.

 

 

예시

#include <iostream>

using namespace std;

int main() {
	string letters[2][4] = {
		{"A", "B", "C", "D"},
		{"E", "F", "G", "H"}
	};
	
	for (int i = 0; i < 2; i++) {
		for (int j = 0; j < 4; j++) {
			cout << letters[i][j];
		}
	}
}

 

이 예시는 3차원 배열을 어떻게 통하여 반복하는지 보여줍니다.

 

 

예시

#include <iostream>

using namespace std;

int main() {
	string letters[2][2][2] = {
		{
			{"A", "B"},
			{"C", "D"}
		},
		{
			{"E", "F"},
			{"G", "H"}
		}
	};

	for (int i = 0; i < 2; i++) {
		for (int j = 0; j < 2; j++) {
			for (int k = 0; k < 2; k++) {
				cout << letters[i][j][k] << "\n";
			}
		}
	}
}

 

 

 


왜 다차원 배열을 사용할까?

다차원 배열은 그리드(격자)를 표현하는 훌륭한 방법입니다. 아래의 예시는 실제 사용 방법을 보여주며 작은 게임인 배틀쉽을 구현하는데 사용했습니다..

 

#include <iostream>

using namespace std;

int main() {
	// 배가 있는 곳을 "1"로 표현했습니다.
	bool ships[4][4] = {
		{0, 1, 1, 0},
		{0, 0, 0, 0},
		{0, 0, 1, 0},
		{0, 0, 1, 0}
	};

	// 이 변수들에 플레이한 턴과 공격 성공 횟수가 기록됩니다.
	int hits = 0;
	int numberOfTurns = 0;

	// 플레이어가 4개의 배를 모두 공격하기 전까지 진행할 수 있게합니다.
	while (hits < 4) {
		int row, column;

		cout << "Selecting coordinates\n";

		// 플레이어에게 열을 선택하게 합니다.
		cout << "Choose a row number between 0 and 3: ";
		cin >> row;

		// 플레이어에게 행을 선택하게 합니다.
		cout << "Choose a column number between 0 and 3: ";
		cin >> column;

		// 해당 좌표에 배가 존재하는지 확인합니다.
		if (ships[row][column]) {
			// 만약 플레이어가 배를 공격했다면 이것의 값을 0으로 재설정합니다.
			ships[row][column] = 0;

			// 공격 성공 횟수를 증가시킵니다.
			hits++;

			// 플레이어에게 공격에 성공했고 얼마나 많은 배들이 남았는지 알려줍니다.
			cout << "Hit! " << (4 - hits) << " left.\n\n";
		}
		else {
			// 플레이어에게 빗나갔다고 말해줍니다.
			cout << "Miss\n\n";
		}

		// 플레이어가 얼마나 많은 턴을 사용했는지 기록합니다.
		numberOfTurns++;
	}

	cout << "Victory! \n";
	cout << "You won in " << numberOfTurns << " turns";

}