2차원 배열 ( Two - Dimensional Array )
2차원 배열은 행 ( Ros )과 열 ( Column ) 로 이루어진 표 형태의 데이터 구조이다.
즉 , 여러 개의 1차원 배열을 한 줄씩 묶어 만든 배열로 좌표나 격자 형태 ( 보드판 , 지도 등 ) 데이터를 표현할 때 자주 사용된다.
문법
▼선언
int[,] arr = new int[행개수, 열개수];
▼초기화
int[,] arr = new int[2, 3] {
{ 1, 2, 3 },
{ 4, 5, 6 }
};
▼접근
Console.WriteLine(arr[0, 1]); // 0행 1열 → 2 출력
[ , ] 는 2차원 배열을 의미하며, arr[ 행인덱스 , 열인덱스 ] 형식으로 접근한다.
예시 코드
▼for 문을 이용한 출력
int[,] map = {
{ 0, 1, 0 },
{ 1, 1, 0 },
{ 0, 0, 1 }
};
for (int y = 0; y < map.GetLength(0); y++) // 행
{
for (int x = 0; x < map.GetLength(1); x++) // 열
{
Console.Write(map[y, x] + " ");
}
Console.WriteLine();
}
▼출력 결과
0 1 0
1 1 0
0 0 1
- GetLength( 0 ) → 행 개수
- GetLength( 1 ) → 열 개수
- 게임 보드나 지도 표현할 때 자주 사용
▼문자열로 된 2차원 배열
string[,] board = {
{ "O", "X", "O" },
{ "X", "O", "X" },
{ "O", "O", "X" }
};
Console.WriteLine(board[1, 2]); // X
- 문자 대신 문자열로도 가능
- 보드판 , 체스판 같은 상황에서 자주 사용
▼2차원 배열 합계 구하기
int[,] scores = {
{ 90, 80, 70 },
{ 60, 85, 95 },
{ 75, 70, 80 }
};
int total = 0;
for (int i = 0; i < scores.GetLength(0); i++)
{
for (int j = 0; j < scores.GetLength(1); j++)
{
total += scores[i, j];
}
}
Console.WriteLine($"총합: {total}");
▼출력 결과
총합: 705
- 2차원 배열은 반복문을 중첩시켜 합계 , 평균 , 최대값 등을 구할 때 자주 사용
▼2차원 배열을 응용해 X자 패턴 출력
int size = 5;
char[,] pattern = new char[size, size];
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
if (i == j || j == size - 1 - i)
pattern[i, j] = '*';
else
pattern[i, j] = ' ';
}
}
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
Console.Write(pattern[i, j]);
Console.WriteLine();
}
▼출력 결과
* *
* *
*
* *
* *
- i == j → 왼쪽 대각선
- j == size - 1 - i → 오른쪽 대각선
- 콘솔 게임의 시각적 효과나 맵 디자인에도 활용 가능
2차원 배열은 행 ( Row ) → 열 ( Column ) 순으로 저장된다
int [,] arr = new [2,3]
{1, 2, 3}
{4, 5, 6}
- arr [ 행 , 열 ] = arr [ y , x ]
- 첫번째 인덱스 : 세로 방향 ( y , 행 , row )
- 두번째 인덱스 : 가로 방향 ( x , 열 , column )
주의할 점
- 배열 크기는 고정된다 → 선언 후에는 크기를 변경할 수 없다.
- 인덱스 범위 오류 조심 → 유효한 범위는 0 ≤ index < 길이
- GetLength() 사용 습관화 → 반복문에서 arr.GetLength(0) / arr.GetLength(1) 로 각 차원 길이를 구하자
- 2차원 배열 vs 가변 배열 ( Jagged Array )
└ int [ , ] arr → 직사각형 형태 ( 행마다 열 개수가 동일 )
└ int [ ] [ ] arr → 가변 형태 ( 행마다 열 개수가 다름 )
정리
2차원 배열은 행과 열로 구성된 표 형태의 데이터 구조로 격자나 보드판 등 위치 기반 데이터를 표현할 때 유용하다.
참고 자료
https://learn.microsoft.com/ko-kr/dotnet/csharp/language-reference/builtin-types/arrays
'⭐C Sharp > 06. 배열' 카테고리의 다른 글
| 사람의 좌표계 vs 프로그래밍 좌표계 (0) | 2025.10.08 |
|---|---|
| 배열 ( Array ) (0) | 2025.09.07 |