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
반응형