2-13
다차원 배열
1. 2차원 배열(2열 배열), 순회


선언방법
int[][] array
int array[][]
int[] array[]

생성 -> 생성도 대괄호 하나 더 추가하면 됨.
int[][] array = new int[][];
[][] 에서 []은 방번호, 뒤의 []는 앞 방의 크기 라고 이해하면 쉬웠다.
2차원 배열 초기화 방법
1. 중괄호로 값을 지정하여 선언과 동시에 초기화
// 중괄호를 사용해 초기화
int[][] array = {
{1, 2, 3},
{4, 5, 6}
};
2. 선언/생성 후 반복을 통한 초기화
package week02.array;
public class Arr06 {
public static void main(String[] args) {
// 반복문을 통한 초기화
int[][] array = new int[2][3]; // 최초 선언
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.println("출력값 => " + i + ", " + j);
array[i][j] = 0; // i, j 는 위 노란색 네모박스 안에있는 숫자를 의미하며 인덱스 라고 부름.
}
}
}
}
정확히 이해 안됐던 부분
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.println("출력값 => " + i + ", " + j);
array[i][j] = 0; // i, j 는 위 노란색 네모박스 안에있는 숫자를 의미하며 인덱스 라고 부름.
}
에서 2번째 줄의 array[i].length; 와 4번째줄의 array[i][j] = 0;
GPT와 팀원들에게 질문하여 이해한 바로는
j < array[i].length; 는 일단 위의 전체 코드에서
int[][] array = new int[2][3];
으로 선언/생성을 했으므로 예를들어
{
{o, o} {o,o} {o,o}
{o ,o} {o,o} {o,o}
}
으로 2차원 배열이 생성이 될텐데 j < array[i].length; 라는 조건문은
j를 array의 i(index크기->i행) 만큼 길이까지 동안
으로 이해했다.
array[i][j] = 0; 은 for문을 통한 초기화 방법을 설명한 코드였으므로 배열 내의 값들을 0으로 초기화 한것으로 이해했다. <-이부분은 매니저님께 질문 후 다시 알아보는 걸로..
->
매니저님께 설명을 들었다.
j < array[i].length; 부분은 내가 맞게 이해했고
array[i][j] = 0; 은 그냥 for문 안에서 초기화 하는 방법의 하나로 가볍게 이해하면 된다고 하셨다.
추가로, for문이든 중괄호를 통해 값을 바로 지정해 초기화를 하던 처음 선언당시에는 무조건 초기값으로 설정된다고 알려주셨다.
2. 가변배열
package week02.array;
public class Arr07 {
public static void main(String[] args) {
// 가변배열
int[][] array = new int[3][];
// 배열 원소마다 각기 다른 크기로 지정
array[0] = new int[2]; // 0번째 행의 크기(열)는 2. ex. {0, 0}, {0, 1}
array[1] = new int[4]; // 1번재 행의 크기(열)는 4. ex. {1, 0}, {1, 1}, {1, 2}, {1, 3}
array[2] = new int[1]; // 2번째 행의 크기(열)는 1. ex. {2, 0}
// 중괄호로 초기화를 아예 해버릴 때도 가능함
int[][] array2 = {
{10, 20},
{10, 20, 30, 40},
{10},
};
}
}
3. 2차원 배열 이상의 다차원 배열 이해
- 2차원 배열 외에도 3,4,5차원 등이 있지만 대부분 3차원까지만 사용
- 3차원 배열
ex. int[][][] multiArray = { { {1, 2}, {3, 4} }, { {5, 6}, {7, 8} } };
4. 다차원 배열 조회
int[][] array = {
{10, 20, 30},
{10, 20, 30, 40},
{10, 20}
};
for (int i = 0; i < array.length; i++) { // 1차원 길이
for (int j = 0; j < array[i].length; j++) { // 2차원 길이
System.out.println(array[i][j]); // 2중 반복문으로 i, j 인덱스 순회
}
}
출력
10
20
30
10
20
30
40
10
20
-> i, j의 위치마다 돌아가며 값을 출력한 것
최대값 구하기
package week02.array;
public class Arr08 {
public static void main(String[] args) {
// 최대값 구하기
int[] arr = {3, 2, 1, 5, 1};
// 최대값 초기화 세팅
int max = arr[0]; // 3이지만 임의로 최대값이라고 세팅
// 최대값 구하기 로직
for (int num: arr) { // int num에 3, 2, 1, 5, 1으로 돌아가는 동안
if (num > max) { // num이 max보다 커지면
max = num; // max를 num으로 바꿔줘
}
}
System.out.println("최대값은 => " + max); // 최대값은 => 5
}
}
'Backend > Java' 카테고리의 다른 글
| Java 문법 3-1. 객체지향 프로그래밍 이해 (1) | 2023.11.23 |
|---|---|
| Java 문법 2주차 2-14,15,16 컬렉션 (5) | 2023.11.22 |
| Java 문법 2주차 2-11,12 배열, 복사, String배열 (1) | 2023.11.22 |
| Java 문법 2주차 2-9,10 while, break, continue, 반복문 활용 (1) | 2023.11.21 |
| Java 문법 2주차 2-6,7,8 if, switch, for (조건문, 반복문) (1) | 2023.11.21 |