안녕하세요, NerdCodeX입니다! 😊
지난 시간에 1차원 배열의 기초와 실습을 다뤘는데요, 오늘은 그 연장선으로 2차원 배열을 살펴보겠습니다.
2차원 배열이란 무엇일까요?
2차원 배열은 행(Row)과 열(Column)의 개념으로 구성되어 엑셀 표처럼 데이터를 저장하는 배열입니다. 이를 통해 데이터를 직관적으로 관리할 수 있고, 다양한 표 형태의 데이터를 표현할 수 있습니다.
오늘은 2차원 배열의 기본 구조부터 표 그리기 실습 예제까지 진행해보겠습니다. 특히, 2중 for문을 활용해 배열을 입력하고 출력하는 방법과 다양한 형태의 표를 만드는 방법을 배워볼 예정입니다.
자바의 배열은 데이터 구조의 기본입니다. 함께 기초를 다지며 실력을 키워봅시다! 😊
2차원 배열의 구조
2차원 배열은 행과 열이 2개로 이루어진 배열을 의미합니다.
A0 | B0 | C0 |
A1 | B1 | C1 |
- 엑셀에서 많이 봤던 구조입니다.
- int[][] arr1= new int[2][3]; (행,열)
- 자바와 C#의 다차원 배열 표현 차이
java [][][] [][][]
C# [] [,] [,,] [][] - 배열은 값을 안집어 넣으면 0이 나온다. (굳이 안넣어도 된다)
int [][] arr2=new int[2][3];
arr2[0][0]=10;
arr2[1][2]=30;
//arr2[2][3]=50; //에러
System.out.println(arr2[1][1]); // 값이 0나옴,
2차원 배열의 값 입력 (2중 for 문)
- 행보다 열이 빨리 변하므로 열이 안쪽으로 안쪽 for문이 된다.
- A,B,C가 먼저 바뀌니(j) 0,1가 나중이니(i)
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
System.out.print(arr2[i][j]+"\t"); // \t는 탭으로 띄우기
}
System.out.println(); //줄바꿈
}
- 결과
연습문제
1)표만들기 예제1 (아래와 같은 행이 순차적인 표를 만드세요)
public class ArrayTest021 {
public static void main(String[] args) {
// 3*3 배열 만들기
int[][] arr3=new int[3][3];
int count=0; // 다음 행에 다음 증가값 추가
// 배열 입력 방법
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
count++;
arr3[i][j]=count; //
}
} // 배열 입력 완료
// 배열 출력
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
System.out.print(arr3[i][j]+"\t");
}
System.out.println();
}// 배열 출력 완료
} //main end
} //class end
- 결과
2)표만들기 예제2 (열로 순차적인 표를 만드세요)
int count=0;
// 문제 2 - 배열 입력 방법
for (int j = 0; j < 3; j++) {
for (int i = 0; i < 3; i++) {
count++;
arr3[i][j]=count; // j보다 i를 먼저 변하게 입력 순서를 바꿈됨.
}
}
- 결과
3)표만들기 예제3 (행으로 역순으로 된 표를 만드세요)
int count=0;
// 문제3 - 배열 입력 문제 방법2
for (int i = 0; i < 3; i++) {
for (int j = 2; j >= 0; j--) {
count1++;
arr3[i][j]=count1; //
}
}// 문제3 배열 입력 완료
- 결과
4)표만들기 예제4 (열로 역순으로 된 표를 만드세요)
int count=0;
// 문제4 - 배열 입력 문제
for (int j = 2; j >= 0; j--) {
for (int i = 2; i >= 0; i--) {
count1++;
arr3[i][j]=count1; //
}
}// 문제3 배열 입력 완료
- 결과
5)표만들기 예제5 (숫자가 1부터 직삼각형 모양으로 들어간 표를 만드세요 - 빈곳은 숫자 0으로)
int count=0;
// 문제5 -
for (int i = 0; i < 3; i++) {
for (int j = 0; j < i+1; j++) {
count1++;
arr3[i][j]=count1; //
}
}
- 결과
6)표만들기 예제6 (숫자가 1부터 직삼각형(우측이 직각) 모양으로 들어간 표를 만드세요)
System.out.println("3)역열 정행 - 2중 배열 ");
System.out.println();
int[][] arr3=new int[3][3];
int count3=0;
for (int i = 0; i < arr3.length; i++) {
for (int j = arr3.length-1; j >= arr3.length-1-i ; j--) {
count3++;
arr3[i][j]=count3;
}
}
for (int i = 0; i < arr3.length; i++) {
for (int j = 0; j < arr3[i].length; j++) {
System.out.print(arr3[i][j]+"\t");
}
System.out.println();
}
System.out.println("================");
7)표만들기 예제7 (숫자가 역순으로 직삼각형(우측이 직각) 모양으로 들어간 표를 만드세요)
System.out.println("7) 역열 역행 - 2중 배열 ");
System.out.println();
int[][] arr7=new int[3][3];
int count7=0;
for (int i = arr7.length-1; i >=0 ; i--) {
for (int j = arr7.length-1; j >=i; j--) {
count7++;
arr7[i][j]=count7;
}
}
for (int i = 0; i < arr7.length; i++) {
for (int j = 0; j < arr7.length; j++) {
System.out.print(arr7[i][j]+"\t");
}
System.out.println();
}
System.out.println("================");
배열 중요 정리
- i행과 j열에 대한 for문의 순서와 +조건 -조건에 따라 행열의 입력 순서가 결정된다.
- 참고 그림
배열의 선언과 초기화를 동시에 할 경우
- 입력 방식
- int[][] k = {
{10,20,30},
{40,50,60}
}; // 선언과 동시 초기화는 위 방법뿐
int[][] k = {
{10,20,30},
{40,50,60}
}; //int[][]k 초기화
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
System.out.print(k[i][j]+"\t");
}
System.out.println();
}//for end
- 메모리는 2차원 배열을 잡지 못한다. 무조건 1차원 배열만 인식
참조사항
1)배열의 대표명은 배열의 시작번지 이다.
2)배열의 길이를 계산해주는 함수
- k는 전체 행에 대한 대표이기도 하다. 배열명.length(행을 의미)
- 열의 길이는 원래 없다. 새로 생성 필요
- 열의 대표는 k[0], k[1]이다. k[i].length(열(가로)의 길이를 의미)
// 배열의 길이
for (int i = 0; i < k.length; i++) { // 행의 길이 파악
for (int j = 0; j < k[i].length; j++) { // 열의 길이 파악
System.out.print(k[i][j]+"\t");
}
System.out.println();
}//for end
- 행은 k, 열은 k[i] 이다.
연습문제) p배열을 선언과 초기화 입력하고 출력시 배열명.length를 사용하라
System.out.println("length를 이용하여 배열을 출력하시오");
int[][] p = {
{1,2,3},
{4,5,6},
{7,8,9}
};//p 배열 선언&초기화
for (int i = 0; i < p.length; i++) {
for (int j = 0; j < p[i].length; j++) {
System.out.print(p[i][j]+"\t");;
}
System.out.println();
}//p배열 출력
오늘은 자바의 2차원 배열에 대해 학습하고, 다양한 표 만들기 예제를 실습해 보았습니다.
2차원 배열은 데이터를 행과 열로 관리할 수 있는 강력한 도구로, 특히 반복문과 함께 사용하면 효율적인 데이터 처리가 가능합니다. 오늘 배운 내용을 잘 이해하고, 다양한 배열을 만들어보며 실력을 키워보세요!
다음 시간에는 배열에서 한 단계 더 나아가 정렬(Sorting)과 검색(Search)에 대해 배워보도록 하겠습니다. 배열의 데이터를 정리하고, 필요한 데이터를 효율적으로 찾는 방법까지 함께 익혀봅시다.
학습은 꾸준함이 생명입니다! 작은 코드 한 줄이라도 직접 입력하며 체득하시길 바랍니다. 그럼 다음 시간에 또 만나요! 😊
Java Day 9: 배열의 기본 개념과 실습 - 1차원 배열 쉽게 배우기
안녕하세요, NerdCodeX입니다! 😊오랜만에 자바 학습 포스팅으로 돌아왔습니다. 오늘은배열(Array)에 대해 알아보겠습니다. 배열은 자바뿐만 아니라 모든 프로그래밍 언어에서 데이터 관리를 위해
nerdcodex.tistory.com
Java Day 8: 오버로딩(Method Overloading) 완벽 정리와 실전 예제
안녕하세요, NerdCodeX입니다! 😊 프로그래밍에서 코드의 가독성은 매우 중요합니다. 이를 해결하기 위한 Java의 강력한 기능 중 하나가 바로 오버로딩(Method Overloading)입니다.오버로딩은 같은 이름
nerdcodex.tistory.com
'자바(Java)' 카테고리의 다른 글
Java Day 11: 정렬 알고리즘과 Bubble Sort 완벽 이해하기 (1) | 2025.01.30 |
---|---|
Java Day 9: 배열의 기본 개념과 실습 - 1차원 배열 쉽게 배우기 (0) | 2025.01.28 |
Java Day 8: 오버로딩(Method Overloading) 완벽 정리와 실전 예제 (0) | 2025.01.27 |
Java Day 7: 메소드 완벽 이해와 실습 - 함수형 프로그래밍 시작하기 (0) | 2025.01.26 |
Java Day 6: Switch와 While 반복문으로 프로그래밍 기본기 강화하기 (1) | 2025.01.25 |