본문 바로가기
  • NerdCodX Blog
자바(Java)

Java Day 10: 2차원 배열 기초와 실습 예제 총정리

by NerdCodeX 2025. 1. 29.

안녕하세요, 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