본문 바로가기
그 외 프로그래밍 언어/Java

자바, 2차원 배열의 중복되는 코드를 for문으로 줄이기

by Dreaming Coder 2021. 12. 4. 22:14

 


 

지난 포스트의 마지막에 작성한 2차원 배열의 코드를 반복문으로 줄여보겠습니다.

 

 

 

지난 포스트

 

자바, 2차원 배열

배열에 이어서 이번에는 이차원 배열을 배워보겠습니다. 지난 포스트 자바, 배열의 선언과 생성 지난 포스트에서 배열에 대해서 배웠습니다. 코드도 보여주면서 배열의 선언과 생성도 다 했었

gogogameboy.tistory.com

 

 

 

반복되는 코드를 줄이는 과정

 

int[][] array = new int[5][5];

array[0][0] = 1;
array[0][1] = 2;
array[0][2] = 3;
array[0][3] = 4;
array[0][4] = 5;

array[1][0] = 6;
array[1][1] = 7;
array[1][2] = 8;
array[1][3] = 9; 
array[1][4] = 10;

array[2][0] = 11;
array[2][1] = 12;
array[2][2] = 13;
array[2][3] = 14;
array[2][4] = 15;

array[3][0] = 16; 
array[3][1] = 17; 
array[3][2] = 18; 
array[3][3] = 19;
array[3][4] = 20;

array[4][0] = 21;
array[4][1] = 22;
array[4][2] = 23;
array[4][3] = 24;
array[4][4] = 25;

지난 포스트의 마지막에 작성했던 코드입니다.

이 반복되는 긴 코드들을 지금부터 for문으로 줄여보겠습니다.

일단 위의 상태에서는 어떻게 줄일 수 있는지 감이 오지 않습니다.

그래서 각각의 인덱스에 넣어준 1부터 25까지의 값들을 아래와 같이 바꿔보겠습니다.

 

 

 

int[][] array = new int[5][5];
int num = 1;

array[0][0] = num++;
array[0][1] = num++;
array[0][2] = num++;
array[0][3] = num++;
array[0][4] = num++;

array[1][0] = num++;
array[1][1] = num++;
array[1][2] = num++;
array[1][3] = num++;
array[1][4] = num++;

array[2][0] = num++;
array[2][1] = num++;
array[2][2] = num++;
array[2][3] = num++;
array[2][4] = num++;

array[3][0] = num++;
array[3][1] = num++;
array[3][2] = num++;
array[3][3] = num++;
array[3][4] = num++;

array[4][0] = num++;
array[4][1] = num++;
array[4][2] = num++;
array[4][3] = num++;
array[4][4] = num++;

int 타입의 변수 num을 만들어서 그 안에 1을 넣었습니다.

그리고 그걸 array[0][0]에 대입을 시킨 다음에 증가연산자 ++을 이용해서 1씩 증가시켜서 1부터 25까지의 값을 넣었습니다.

이제 좀 반복된 코드들이 보이기 시작합니다.

 

 

 

 

int[][] array = new int[5][5];
int num = 1;

for (int i=0; i<5; i++) {
	array[0][i] = num++;
}

array[1][0] = num++;
array[1][1] = num++;
array[1][2] = num++;
array[1][3] = num++;
array[1][4] = num++;

array[2][0] = num++;
array[2][1] = num++;
array[2][2] = num++;
array[2][3] = num++;
array[2][4] = num++;

array[3][0] = num++;
array[3][1] = num++;
array[3][2] = num++;
array[3][3] = num++;
array[3][4] = num++;

array[4][0] = num++;
array[4][1] = num++;
array[4][2] = num++;
array[4][3] = num++;
array[4][4] = num++;

첫번째 행(0번 행)만 for문을 이용해서 줄여보았습니다.

다른 곳도 똑같이 줄여봅시다.

 

 

 

int[][] array = new int[5][5];
int num = 1;

for (int i=0; i<5; i++) {
	array[0][i] = num++;
}

for (int i=0; i<5; i++) {
	array[1][i] = num++;
}

for (int i=0; i<5; i++) {
	array[2][i] = num++;
}

for (int i=0; i<5; i++) {
	array[3][i] = num++;
}

for (int i=0; i<5; i++) {
	array[4][i] = num++;
}

여기까지 중복된 코드들을 줄여보니 또 중복이 보입니다.

이차원 배열의 행만 0부터 4까지 증가하고 나머지 코드들은 다 똑같죠.

이걸 또 이중 for문으로 줄여봅시다.

 

 

 

int[][] array = new int[5][5];
int num = 1;

for (int j=0; j<5; j++) {
	for (int i=0; i<5; i++) {
		array[j][i] = num++;
	}
}

최종적으로 이렇게 코드가 짧아졌습니다.

스크롤을 올려서 처음 코드와 비교를 하면 놀라울 정도로 짧아졌습니다.

여기서 한가지만 더 바꿔줍시다.

 

 

 

int[][] array = new int[5][5];
int num = 1;

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

숫자 5를 array.length로 바꿔주었습니다.

 

숫자 대신에 array.length를 넣어주시면 혹시 나중에 배열의 칸의 크기가 변경이 된다고 해도 반복문의 코드도 같이 수정을 할 필요가 없어집니다.

안쪽의 for문에는 array[j].length라고 넣었습니다.

행과 열을 확실히 구분해주기 위함입니다.

지금은 5행 5열이니 그냥 array.length를 넣어도 오류가 나지 않겠지만, 행과 열이 다를 경우에는 문제가 발생할 수도 있습니다.

 

 

 

 

자바, 배열

반복문에 대한 글은 지난 포스트에서 끝났습니다. 하지만 끝났다고 해도 앞으로도 가끔 등장할 겁니다. 이제는 배열에 대해서 배워봅시다. 지난 포스트 자바, for문을 이용해서 별 찍기 이번 글

gogogameboy.tistory.com

length에 대한 설명은 전에 작성한 위의 포스트에 설명이 나와있으니 참고 바랍니다.

 

 

 

 

 

 

다음 포스트

 

자바, 메소드(method)의 기본 구조

이번에는 메소드method에 대해서 배워봅시다. 처음에는 분명 어렵고 복잡하게 느껴질 수도 있지만, 일단 해보면 조금씩 이해가 되실 겁니다. 지난 포스트 자바, 2차원 배열의 중복되는 코드를 for

gogogameboy.tistory.com

 

 

 


이 글이 도움이 됐다면 하단의 공감 버튼을 꾹 눌러서
빨간 하트로 만들어주세요.
지인에게 보여주고 싶은 글이었다면
공감 버튼 옆을 클릭해서 SNS 공유해주세요.
댓글은 블로그 운영에 큰 힘이 됩니다.

 


 


댓글