학습 기록/Java

23.05.15 / Java / 2차원 배열

SooHw 2023. 5. 29. 15:36

2차원 배열

3행 2열의 배열 

int arr[][] = new arr[3][2]

 

* 예제

 

		int ary[][] = new int[5][5];

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

		for (int j = 0; j < ary[0].length; j++) {
			for (int i = 0; i < ary[j].length; i++) {
				System.out.print(ary[j][i] + "\t");
			}
			System.out.println();
		}

* 결과창

1	6	11	16	21	
2	7	12	17	22	
3	8	13	18	23	
4	9	14	19	24	
5	10	15	20	25

 

*예제 

		int ary[][] = new int[5][5];

		int num = 0;

		for (int i = 0; i < ary[0].length; i++) {
			if (i % 2 == 0) {
				for (int j = 0; j < ary[i].length; j++) {
					num++;
					ary[i][j] = num;
				}
			} else {
				for (int j = ary[i].length - 1; j >= 0; j--) {
					num++;
					ary[i][j] = num;
				}
			}
		}

		for (int j = 0; j < ary[0].length; j++) {
			for (int i = 0; i < ary[j].length; i++) {
				System.out.print(ary[j][i] + "\t");
			}
			System.out.println();
		}

* 결과창

1	2	3	4	5	
10	9	8	7	6	
11	12	13	14	15	
20	19	18	17	16	
21	22	23	24	25

 

*치환 개념으로 코드 간략화


		int ary[][] = new int[5][5];

		// 치환
		int num = 0; // 1씩 증가
		int start = 0; // 배열의 시작하는 인덱스
		int end = ary.length - 1; // 배열의 끝 인덱스
		int temp = 0; // 치환용 변수
		int reverse = 1; // 양수1 혹은 음수1

		for (int i = 0; i < ary[0].length; i++) {
			for (int j = start; j != end + reverse; j += reverse) {
				num++;
				ary[i][j] = num;
			}
			temp = end;
			end = start;
			start = temp;
			reverse = -reverse;

		}

		for (int j = 0; j < ary[0].length; j++) {
			for (int i = 0; i < ary[j].length; i++) {
				System.out.print(ary[j][i] + "\t");
			}
			System.out.println();
		}

솔직히 더 지저분해보이지 간단해보이진 않는다..

'학습 기록 > Java' 카테고리의 다른 글

23.05.17 / Java / ArrayList  (0) 2023.05.29
23.05.16 / Java / 메소드(Method)  (0) 2023.05.29
23.05.12 / Java / array  (0) 2023.05.12
23.05.10 / Java / 반복문(for문)  (0) 2023.05.10
23.05.09 / Java / 반복문  (0) 2023.05.09