출처 : DO IT C언어 - 김성엽
1차원 배열을 2차원 배열로 표현하려면 어떻게 해야 될까?
바둑판을 생각해보자. 바둑판에 놓여 있는 돌의 정보를 저장하고 싶다면 돌 한 개의 정보를 어떤 형식의 변수에 저장할 것인지를 먼저 결정해야 된다.
돌의 정보는 돌이 놓여 있지 않으면 0, 검은 돌이 놓여 있으면 1, 흰 돌이 놓여 있으면 2와 같이 세 가지 경우로 나눌 수 있다.
따라서 Char형으로 충분히 세 가지 값을 구별해서 저장 가능하다.
바둑판은 가로로 19개의 돌을 놓을 수 있고, 세로 방향으로 19개의 돌을 놓을 수 있기 떄문에 총 361(19 * 19)의 돌을 놓을 수 있다. char data[361];
2차원 형태의 정보를 1차원 배열에 저장하기 위해 한 행에 이어 그 다음 행을 저장하는 방식을 사용한다.
data 배열의 0~18번까지 1행의 정보가 저장되고, 19~37번까지 2행의 정보가 저장된다.
돌이 놓여 있지 않으면 0, 검은 돌이 놓여 있으면 1, 흰 돌이 놓여 있으면 2로 저장하면 2차원인 바둑판 정보를 data 배열에 모두 저장 가능하다.
배열에서 첫 번쨰 요소의 색인은 0이다. 따라서 179번 요소는 180번째 요소를 뜻한다.
2차원 정보를 1차원 배열에 저장하면 소스 코드를 작성할 떄 요소의 위치를 파악하기 힘들다.
2차원 배열의 필요성
2차원은 좌표를 적을 때 2개의 축을 사용하고 각 축의 이름은 X축, Y축이며, X축은 수평 방향에 대한 기준 값이고 Y은 수직 방향에 대한 기준 값이다.
따라서 2차원 공간에 있는 한 점은 자신의 위치를 좌표로 나타낼 떄 (X축 좌표 값, Y축 좌표 값) 형태로 사용한다.