JAVA/기본 이론

JAVA | 배열(Array)(2)

로아다 2023. 3. 18. 22:21
728x90
반응형
배열 안에 배열을 넣을 수 있다.(배열을 요소로 가지는 배열을 만들 수 있다.)
public class B14_Array2 {

	public static void main(String[] args) {
		
		int[] arr1 = {1, 3, 5, 7, 9};
		int[] arr2 = {10, 20, 30, 40, 50, 60, 70, 80 ,90};
		
		int[][] arr3 = {
				arr1, 
				arr2,
				arr1,
				new int[] {9, 9, 9, 9, 9, 9},
				{8, 88, 888, 8888, 88888},
				arr1,
		};
	}
}

 

public class B14_Array2 {

	public static void main(String[] args) {
		
		// arr4에 arr1이 가리키고 있던 배열의 주소를 넘겼으므로
		// arr4를 수정하면 원래 arr1이 가리키고 있던 배열의 값을 바꾼다.
		int[] arr4 = arr1;
		
		// arr5는 있던 배열의 주소를 넘겨 받은 것이 아니라
		// 새로운 배열을 메모리상에 만든 것이므로 arr5를 아무리 수정해도
		// arr1의 배열은 변하지 않는다.
		int[] arr5 = new int[] {1, 3, 5, 7, 9};
		
		arr4[0] = 512;
		arr5[0] = 99;
		
		System.out.println(arr4[0]);
		System.out.println(arr5[0]);
		System.out.println(arr3[0][0]);
		System.out.println(arr3[2][0]);
		System.out.println(arr1[0]);
        
		}
}

 


반복문을 이용해서 배열 탐색하기
public class B14_Array2 {

	public static void main(String[] args) {
		
	// n차원 배열은 n중 반복문으로 모두 탐색할 수 있다.
		int[] myArr = {1, 2, 3};
		
		int[][] nums = {
				myArr,
				{4, 5, 6, 7, 8, 9},
				{99, 100, 15, 20},
				myArr,
				
		};
		
		// nums.length : 배열 안에 들어있는 배열이 몇 개인지
		for (int i = 0; i < nums.length; ++i) {
			
			// nums[i].length : i번째 배열의 요소가 몇 개인지
			for (int j = 0; j < nums[i].length; ++j) {
				System.out.printf("nums[%d][%d]: %d\n", i, j, nums[i][j]);
			}
			
		}
        
	}
 }

 

 

 

 

 

 

Quiz
int[][] myArr = {
				{1, 1, 1, 1, 1, 1, 1},
				{1, 1, 1},
				{1, 1, 1, 1, 1},
				{1, 1},
				{1, 1, 1, 1}
		};

 

myArr의 각 열(column)의 합을 구해서 출력하기 ↓ (위에서 아래로)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Answer
package answer;

import java.util.Arrays;

public class B14_Array2Quiz {
	public static void main(String[] args) {

		int[][] myArr = {
				{1, 1, 1, 1, 1, 1, 1},
				{1, 1, 1},
				{1, 1, 1, 1, 1},
				{1, 1},
				{1, 1, 1, 1}
		};
        // myArr의 각 열(column)의 합을 구해서 출력하기

		// 열의 합은 각 배열 중 가장 긴 배열의 길이만큼 있다
		int maxLen = 0;

		for (int i = 0; i < myArr.length; ++i) {
			int len = myArr[i].length;

			maxLen = myArr[i].length > maxLen? len: maxLen;
		}

		// 1번 방법. 배열의 계산은 유지하되, 저장을 열로 뽑는다.
		int[] colSum1 = new int[maxLen];
		// row는 행, 배열의 개수
		for (int row = 0; row < myArr.length; ++row) {
			// col은 열, 해당 줄의 길이 만큼 있다
			for (int col = 0; col < myArr[row].length; ++col) { // 모든 요소 꺼내기
				colSum1[col] += myArr[row][col];
			}
		}
		System.out.println("각 열의 합:" + Arrays.toString(colSum1));

		
		// 2번 방법. 세로로 열만 더하기
		int[] colSum2 = new int[maxLen];
		// col 0 : row 0 ~ 4까지 돌린다.
		for (int col = 0; col < maxLen; ++col) {
			for (int row = 0; row < myArr.length; ++row) {
				if (col < myArr[row].length) {
					colSum2[col] += myArr[row][col];
				}
			}
		}
		System.out.println("각 열의 합:" + Arrays.toString(colSum2));
	}
}
728x90
반응형