C언어 : 2차원 배열

지환·2022년 1월 7일
0

C언어

목록 보기
16/37
post-thumbnail

출처 : 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축 좌표 값) 형태로 사용한다.

  • 앞으로 우리가 배울 2차원 배열을 바로 위 그림과 같이 2차원 형식의 데이터를 저장할 떄 사용하기 떄문에 앞에서 설명한 바둑판에 놓인 바둑돌의 위치 정보도 2차원 형식의 데이터다.

  • 바둑판에는 최대 20개의 돌을 놓을 수 있다.
  1. 놓인 돌이 없음 - > 0으로 가정
  2. 검은 돌이 놓임 -> 1으로 가정
  3. 흰 돌이 놓음 -> 2라고 가정
profile
아는만큼보인다.

0개의 댓글