본문 바로가기
👨‍💻 프로그래밍/Java, Kotlin, Spring

자바 16 - 2차원 배열

by 개발자 진개미 2021. 5. 2.
반응형

컴퓨터는 기본적으로 1차원 자료 구조를 가지고 있다. 그러나, 일상생활에서도 그렇고, 프로그래밍을 할때도 2차원 이상의 자료 구조를 사용하고 싶을때가 많다. 말이 어려울 수 있지만, 쉽게 말해 체스 프로그램을 만든다고 해 보면, 체스 말을 저장할 구조는 2차원이다. 1차원 배열을 사용해서 체스 말을 저장할 수도 있겠지만, 매우 헷갈리고 비효율적이기에, 2차원 배열이 있다. 주의해야 할 것은, 2차원 배열도 컴퓨터 안에서는 1차원 배열도 저장된다는 것이다.

 

1. 2차원 배열 문법

2. 2차원 배열 활용

 


1. 2차원 배열 문법

2차원 배열은 1차원 배열과 마찬가지로 대괄호를 사용해 선언한다. 차이점은, 2차원이기 때문에 2개의 대괄호를 써야 한다는 것이다.

 

int[][] ex = new int[3][4];

 

위의 코드는 크기가 3-4인 2차원 배열을 선언했다.

 

1차원 배열때와 마찬가지로, 2차원 배열도 대괄호를 변수 이름뒤에 써도 상관없다. 하지만, 이 방식은 많이 선호되지는 않는다.

 

int ex[][] = new int[3][4];

 

2차원 배열의 길이는 2가지가 있다. 우선, 첫 번째 차원의 길이, 위의 코드에서는 3인 길이와, 두 번째, 각 차원에 할당된 4개의 길이 두 개가 있다. 첫 번째 길이는 아래와 같이 나타낸다.

 

int[][] ex = new int[3][4];
ex.length; // 3

 

두 번째, 각 차원에 속한 길이는 아래와 같이 나타낸다.

 

int[][] ex = new int[3][4];
int[0].length // 4

 

2차원 배열은 아래와 같은 이미지로 나타낼 수 있다.

위의 배열은 5-5 크기를 가진 배열이다. 여기서, 아래와 같이 변수를 넣는다면 아래의 이미지 같이 된다.

 

ex[2][1] = 7;

 


2. 2차원 배열 활용

2차원 배열이 직접적으로 활용되는 예제는 상당히 복잡하다. 여기서는 간단하게 2차원 배열의 모든 원소를 더하기 위해선 어떻게 해야 되는지와, 체스 프로그램의 일부를 만들어보자.

 

먼저, 2차원 배열의 모든 원소를 더할려면 어떻게 해야 할까? 아래와 같은 2차원 배열이 있는데 크기는 모른다고 해 보자.

 

int[][] ex;

 

그렇다면 for루프와 length 매소드를 활용해서 이 2차원 배열에 있는 모든 원소를 더할 수 있다.

 

int sum = 0;

for(int i = 0; i < ex.length; i++) {
	for(int j = 0; j < ex[i].length; j++) {
    	sum += ex[i][j];
    }
}

 

다음은 체스 프로그램의 일부를 작성해 보자. 여기서는 체스 말을 저장하는 배열을 작성한다고 해 보자. 체스 말에 단순히 종류에 따라 숫자를 부여한다고 하면, 아래와 같은 배열을 작성할 수 있을 것이다.

 

int[][] board = new int[8][8];

 

극히 일부지만, 2차원 배열을 사용해서 체스 프로그램을 만들 수 있다.


 

반응형

댓글