자바(Java)〃배열(2) 다차원 배열(2차원 배열) + 구구단 예제

반응형

                                                      


어제는 자바의 배열에 대한 특징과 생성, 배열의 길이, 배열의 복사에 대해 정리해보았고요. 오늘은 배열의 꽃이라 할 수 있는 다차원 배열에 대해 정리해보도록 하겠습니다.


자주 사용하는 다차원 배열중 2차원 배열은 수학에서 행렬과 같은 구조를 가지고 있고, 3차원 배열은 입체적인 정사각형 모양의 구조를 가지고 있습니다. 


제가 배열을 공부하면서 항상 헷갈렸던 부분은 배열의 인덱스 좌표였는데요. 수학에서 행렬은 원점이 (1,1)부터 시작하지만 배열은 (0,0)부터 시작하기 때문에 자주 써보질 않으면 적응이 잘 안됩니다. 



2차원 배열의 구조

처음 2차원 배열을 공부하면서 학원 강사님이 구구단을 만들어 보라 해서 만들었던게 벌써 7개월전 이네요. 왜 그때는 어렵게만 느껴졌는지 모르겠지만 지금은 다시 공부해보니 개념만 잘 숙지한다면 그리 어렵지 않은것 같아요. 



제가 제일 중요하게 여기는 인덱스의 위치를 수학에서 행렬과 비교해봤습니다. 진짜로 이 차이점만 잘 알고 있어도 다차원배열을 사용하는데 혼란이 오지 않을겁니다. 사진을 보시면 배열의 인덱스는 (0,0)부터 시작하기 때문에 제일 우측모서리 끝부분이 (3,5)인것 같아도 실제로는 각각 1을 뺀 (2,4)라는것을 알 수 있겠죠?? 그러면 2차원 배열을 생성해볼게요.


1차원 배열선언 알아보기 → 자바(Java)〃배열(1) 특징 / 생성 / 길이 / 복사


아참!! 어제 정리해둔 포스팅을 먼저 보고 오시면 이해하기 쉬우실거에요. 왜냐하면 1차원 배열과 완전 똑같아서 선언과 생성 및 할당을 한번에 할수도 있고 나눠서 할 수 있기 때문이죠.


먼저 하나하나 데이터를 만들어준 방식으로 2차원 배열의 선언과 생성과 할당을 한번에 해준예제입니다. 중괄호는 그룹값이라고 해서 첫 중괄호 {1,2}는 그룹값 0으로 score[0]을 저장하고 두번째 중괄호 {4,5}는 그룹값1, score[1]의 데이터를 저장합니다. 그룹값 0과 그룹값1이 2개이므로 배열의 길이 2를 만족시키기 때문에 더이상 만들게 되면 예외가 떠버려요.


하지만 이렇게 일일이 배열값을 만들어주려면 복잡해서 잘 쓰이지 않아요. 보통 배열을 선언한다음 for문과 if문을 활용해서 배열을 생성함으로 코드는 간결하지만 복잡한 프로그램들을 만들어 낼 수 있기 때문이죠.




 for문과 if문을 이용한 2차원 배열 ( + 구구단 )

위에서는 생성과 할당을 개수만큼 직접 값을 주었지만 구구단처럼 81개의 값을 직접 만들려면 여간 힘이 드는 작업이 아닐수가 없습니다. 그래서 이번에는 배열의 생성을 for문과 if문으로 만들어 내면 얼마나 편한지 알아보려고 합니다.


휴우 출력값이 길어지다보니 사진크기가 장난이 아니네요. 구구단에서는 if가 사실 쓰일일이 없지만 2단에서 2x9, 3단에서 3x9가 되면 줄을 넘기는 방법으로 이용할 수 있었습니다. 


사진과 같이 보이면서 해석이 될지 모르겠지만 int [][] gugudan = new int[10][10]으로 2차원 배열 0부터 9까지의 길이를 생성하고, for문으로 i와 j의 범위를 정해줌으로 값을 생성합니다. 그리고 gugudan[ i ][ j ] = i * j ; 로 배열의 값을 할당한다음 출력을 하면됩니다. 마지막으로 보기좋게 꾸며주시면 위사진과 같이 출력이 되는데 보통 구구단은 배열을 이용하지 않고 for문으로만 만들수 있기 때문에 이렇게 하실 필요가 없습니다.


2차원 배열 구구단(Hun IT Blog).txt


나중에 복습겸 또 만들어 볼수 있도록 메모장에 소스를 옮겨 놓은것을 올리고 배열은 이만 마치도록 할게요. 

반응형