foxpacking

Programming Lessons

Java 언어 Korean

Java 총 정리[28. 다차원 배열]

다차원 배열

이전 걸음에서 배열에 대한 내용과 문제를 풀어봤습니다. 이렇게 배열을 한 줄로 쪽 세워서 쓰는 것을 1차원 배열이라고 합니다. 1차원 배열을 사용한다면 불편한 점이 없을 까요? 만약에 값을 사용을 하려고 할 때 구분을 하여서 값을 관리 하는 것이 2개이거나 또는 3개인 경우 이렇게 일렬로 세워서 데이터를 관리하면 값을 추출 하거나 저장하기에는 힘들 것 같지 않나요? 저 역시 안되는 것은 아니지만 뭔가 추가적인 작업이 당연히 필요할 것이라고 생각합니다.

그럼 값이 구분이 되는 것이 2개 이상인 경우에는 어떻게 배열을 활용을 해야 할까요? 구분을 해야 한다면 중간에 구분이 될 수 있는 것이 추가가 된다면 여러 구분을 나눠서 값을 저장하거나 사용이 된다면 값의 관리가 좀 더 좋을 수 있습니다. 그것이 배열이 하나가 아니라 여러 배열을 추가를 하면 됩니다. 이 글을 읽으신다면 구분이 필요한 배열이 무엇이면 사용을 하는 방법을 알 수가 있습니다.

위의 내용이 바로 다차원 배열입니다. 다차원 배열은 값을 만나기 전에 배열을 둬서 나누기 때문에 값을 찾아 갈 때 사람이 이해를 하기가 좋습니다. 다차원 배열에 대한 이해와 왜 나왔으며 어떻게 사용을 하면 좋을 지 이 글을 끝까지 읽으신다면 이해를 하실 수 있습니다.

다차원 배열 이란?

다차원배열설명1 사진

다차원 배열을 왜 쓰게 된 것일까요? 1차원 배열이 있는데 다차원 배열을 쓰게 된 것은 사람은 구분을 지어주면 이해를 더 빨리 하기 때문입니다. 컴퓨터는 상관이 없지만 사람은 뭐든 구분을 지어주는 것이 중요합니다.

예를 들어 한반에 20명에 학생이 있고 시험 과목이 10개이면 1차원 배열로 한다면 20 * 10을 [200]을 만들어서 점수를 저장하고 사용을 해야 합니다. 이렇게 되면 사람이 이해를 하는 구분이 되어 있지 않아서 사용을 하기가 어려워 집니다. 

그럼 이렇게 [200]이 아니라 중간에 구분을 둬서 [20][10]이렇게 인덱스를 접근을 한다면 어떤가요? 좀 더 편하게 느껴지지 않나요? 앞에 인덱스는 학생이고 뒤에 있는 인덱스는 과목이 되기 때문에 직관적으로 보기도 편해집니다.

다차원 배열 사용 방법

다차원 배열은 2차원 배열 이상을 말합니다. 하지만 제일 많이 쓰는 것이 2차원 배열이기 때문에 2차원 배열로 설명을 드리겠습니다.

int[][] a = new int[5][5]; //5X5배열 선언

a[0][0] = 10; // 2차원 배열 a의 인덱서 0, 0에 값 10을 대입

System.out.println(a[0][0]);//2차원 배열 변수 a의 인덱서 0,0의 값을 출력 10이 출력 됩니다.

※ 여기서 다른 배열 인덱스의 정수 값은 어떻게 될 까요? 배열은 new로 선언해서 만들기 때문에 정수라면 기본적으로 0이 대입이 되어 있습니다.

※ a[0] = 10 이게 될까요? 당연히 안됩니다. a 2차원 배열은 인덱스를 2번이 타고 들어가야 정수 값이 대입을 할 수 있습니다. a[0] 자료형이 int가 아니라 int[]이기 때문에 int를 담을 수 있는 공간을 알고 있는 주소입니다. 그래서 정수 값은 넣을 수 없습니다. 꼭 자료형이 값을 넣을 수 있는 자료형인지 확인을 하셔야 합니다.

다차원배열소스및결과 사진
다차원배열소스설명 사진
    
public static void main(String[] args) {
	// TODO Auto-generated method stub
	int[][] a = new int[5][5];
		
	int count = 1;
		
	for(int i = 0;i<a.length;i++) { // 행
		for(int j = 0;j<a[i].length;j++) { // 열
			a[i][j] = count++;
		}
	}
		
	for(int i = 0;i<a.length;i++) { // 행
		for(int j = 0;j<a[i].length;j++) { // 열
			System.out.print(a[i][j] + "\t");
		}
		System.out.println();
	}
		
}        
    

Dolphin

About Author

Leave a comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You may also like

Korean Programming 기초

IT 개발자 VS 프로축구선수 비교?

IT 개발자와 프로축구선수의 같은 점과 다른 점? 프로그래밍 공부를 하시면서 개발자로 취업을 하려고 하는데 과연 취업을 할 수 있을까? IT
Korean 클라우드

AWS 로그인 불가능, AWS고객 센터 이메일 문의 결과는?

AWS 고객센터 이메일 문의 솔직후기 AWS를 사용하기 위해 로그인을 하는 경우 이메일로 코드 번호를 보내지만 이메일로 받을 수 없는 상황이거나