일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- github
- DP
- python
- 백준
- Tutorial
- Material
- dfs
- 오류
- Algorithm
- String
- Class
- 재귀
- parameter
- Basic
- W3Schools
- 프로그래밍
- dynamic
- 문제풀이
- 기초
- guide
- loop
- UE5
- Unity
- 파이썬
- C#
- c++
- w3school
- 시작해요 언리얼 2022
- Unreal Engine 5
- Programming
- Today
- Total
행복한 개구리
C++ Tutorial - Arrays / Multi-Dimensional Arrays 본문
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";
}
'C++ > 공부내용' 카테고리의 다른 글
C++ Tutorial - References / Create References (0) | 2022.06.23 |
---|---|
C++ Tutorial - Structures (struct) (0) | 2022.06.23 |
C++ Tutorial - Arrays / Get Array Size (0) | 2022.06.22 |
C++ Tutorial - Arrays / Omit Array Size (0) | 2022.06.22 |
C++ Tutorial - Arrays / Arrays and Loops (0) | 2022.06.21 |