일지이기 때문에 일기의 성격이 더 강합니다.

2차원 배열
2차원 배열이란, 배열이 배열을 요소로 가지고 있는 걸 의미한다. 행과 열의 느낌으로 접근한다. 아래 코드 같은 느낌이라 보면 된다.
int[][] arr = new int[3][4];
// → col
0 1 2 3 // ↓ row
4 5 6 7
8 9 10 11
배열 초기화
2차원 배열의 경우 1차원과 기본적인 선언은 비슷하다.
// 배열 선언
int[][] arr = new int[2][3];
int[][] arr = {{1,2}, {3,4}};
int[][] arr = new int[][]{{1,2}, {3,4}};
1차원과 다른 지점은 2차원 배열부분은 당장 선언하지 않아도 된다는 지점. 즉 int[][] arr = new int[2][]; 로 선언해두고, 나중에 arr[1] = new int[3]; 처럼 해도 된다는 것이다. 이에 따라 2차원 배열은 안쪽 배열의 길이가 각각 다를 수가 있다. 초기화 방법의 경우 1차원과 비슷하지만, 일반적으로는 2중 for문을 돌리는 편이다.
배열 순회
행/열 우선 순회
행 우선 순회란, 행을 고정시키고 열을 순회하는 것을 의미한다. 일반적으로는 이렇게 순회처리한다.
int R = arr.length;
int C = arr[0].length;
//1. 행(r)을 먼저 고정
for (int r = 0; r < R; r++) {
// 2. 열(c)을 순차적으로 방문
for (int c = 0; c < C; c++) {
System.out.printf("%d ", arr[r][c]);
}
System.out.println(); // 행 변경 시 줄바꿈
}
반면 열 우선순회는, 열을 고정시키고 행부터 순회하는 것을 의미한다.
int R = arr.length;
int C = arr[0].length;
//1. 열(c)을 바깥쪽으로 고정
for (int c = 0; c < C; c++) {
// 2. 행(r)을 순차적으로 방문
for (int r = 0; r < R; r++) {
System.out.printf(arr[r][c]);
}
System.out.println(); // 열 변경 시 줄바꿈
}
지그재그 순회
지그재그로 순회한다. 짝수라면 왼쪽에서 오른쪽으로, 홀수라면 오른쪽에서 왼쪽으로 순회한다. 핵심은 행 번호(r)가 짝수냐 홀수냐에 따라 열 방향을 바꾸는 것으로, S자 모양으로 배열을 순회하게 된다. 즉, 예를 들어 (0, 9)에서 (1,0)으로 가려면 꽤 오랜 부분을 수정해야하는데, 지그재그를 쓰면 바로 아래인 (1,9)로 내려가 반대로 올 수 있다.
for(int r = 0; r < rows; r++){
// 짝수 행: 왼쪽 -> 오른쪽 (0, 2, 4 .,)
if ((r & 1) == 0){
for(int c = 0; c < cols; c++) {
System.out.print(arr[r][c] + " ");
}
}
// 홀수 행: 오른쪽 -> 왼쪽
else {
for(int c = cols - 1; c >= 0; c--) {
System.out.print(arr[r][c] + " ");
}
}
}
// 비트 연산자 (r & 1) 은 (r % 2) 와 동일
// (r & 1) =( 0 : 짝수 (Even)
// (r & 1) =( 1 : 홀수 (Odd)
달팽이 순회
top, bottom, left, right의 변수를 초기화해 테두리(경계선)에 부딪힐 때까지 순회한다. 그렇게 하면서 경계를 서서히 축소해나가며 경계가 서로 교차할 때까지 반복한다. top <= bottom && left <= right의 조건이 끝나는 순간 순회가 종료되었다고 보면 된다.
아래는 자주 사용되는 달팽이 숫자의 핵심 코드다.
int k = 0;
int idx = 1;
int top = 0, bottom = n - 1;
int left = 0, right = n - 1;
while(top <= bottom && left <= right){
for(int c = left; c<= right; c++) { answer[top][c] = idx; idx++; }
top++;
for(int r = top; r <= bottom; r++) { answer[r][right] = idx; idx++; }
right--;
for(int c = right; c >= left; c--) { answer[bottom][c] = idx; idx++; }
bottom--;
for(int r = bottom; r >= top; r--) { answer[r][left] = idx; idx++; }
left++;
}
N차원 배열
그 외 3차원 배열도 존재한다. 이 경우에는 xyz라는 3차원의 느낌으로 접근하면 좋다. 2차원과 비슷한 규칙이며, xy, xz, yz라는 게 가능하다는 지점에 유의할 것. 자주 사용되진 않는다.
'부트캠프 일지 > Java 풀스택 과정 강의' 카테고리의 다른 글
| [Java 풀스택 과정 강의] 3월 4일 (0) | 2026.03.04 |
|---|---|
| [Java 풀스택 과정 강의] 3월 3일 (0) | 2026.03.03 |
| [Java 풀스택 과정 강의] 2월 26일 (0) | 2026.03.02 |
| [Java 풀스택 과정 강의] 2월 25일 (0) | 2026.03.02 |
| [Java 풀스택 과정 강의] 2월 24일 (0) | 2026.03.02 |