Responsive Advertisement

Java Multi-Dimensional Arrays: ๋‹ค์ฐจ์› ๋ฐฐ์—ด์˜ ํ™œ์šฉ๋ฒ•

๋‹ค์ฐจ์› ๋ฐฐ์—ด(Multi-Dimensional Arrays)์€ ๋ฐ์ดํ„ฐ์˜ ํ–‰(row)๊ณผ ์—ด(column) ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. Java์—์„œ๋Š” 2์ฐจ์› ๋ฐฐ์—ด์ด ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ทธ ์™ธ์—๋„ 3์ฐจ์› ์ด์ƒ์˜ ๋ฐฐ์—ด์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Java ๋‹ค์ฐจ์› ๋ฐฐ์—ด์˜ ๊ธฐ๋ณธ ๊ฐœ๋…, ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  ์‹ค์ƒํ™œ ํ™œ์šฉ ์˜ˆ์ œ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

1. ๋‹ค์ฐจ์› ๋ฐฐ์—ด์ด๋ž€?

๋‹ค์ฐจ์› ๋ฐฐ์—ด์€ ๋ฐฐ์—ด ์•ˆ์— ๋˜ ๋‹ค๋ฅธ ๋ฐฐ์—ด์ด ์žˆ๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ˜•ํƒœ๋Š” 2์ฐจ์› ๋ฐฐ์—ด๋กœ, ํ–‰๊ณผ ์—ด๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 2์ฐจ์› ๋ฐฐ์—ด์€ ํ‘œ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์œ ์šฉํ•˜๋ฉฐ, 3์ฐจ์› ์ด์ƒ์˜ ๋ฐฐ์—ด์€ ๋” ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. ๋‹ค์ฐจ์› ๋ฐฐ์—ด ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™”

2.1 2์ฐจ์› ๋ฐฐ์—ด ์„ ์–ธ

Java์—์„œ 2์ฐจ์› ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

int[][] matrix; // 2์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด ์„ ์–ธ
String[][] names; // 2์ฐจ์› ๋ฌธ์ž์—ด ๋ฐฐ์—ด ์„ ์–ธ

2.2 2์ฐจ์› ๋ฐฐ์—ด ์ƒ์„ฑ

๋ฐฐ์—ด ์ƒ์„ฑ ์‹œ ํ–‰(row)๊ณผ ์—ด(column)์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

matrix = new int[3][4]; // 3ํ–‰ 4์—ด์˜ ์ •์ˆ˜ํ˜• ๋ฐฐ์—ด ์ƒ์„ฑ
names = new String[2][3]; // 2ํ–‰ 3์—ด์˜ ๋ฌธ์ž์—ด ๋ฐฐ์—ด ์ƒ์„ฑ

2.3 ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”

2์ฐจ์› ๋ฐฐ์—ด์€ ์„ ์–ธ๊ณผ ๋™์‹œ์— ๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

String[][] names = {
    {"Alice", "Bob", "Charlie"},
    {"David", "Eve", "Frank"}
};

3. 2์ฐจ์› ๋ฐฐ์—ด ์š”์†Œ ์ ‘๊ทผ

๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋Š” ํ–‰๊ณผ ์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ: 2์ฐจ์› ๋ฐฐ์—ด ์š”์†Œ ์ถœ๋ ฅ

public class ArrayAccess {
    public static void main(String[] args) {
        int[][] matrix = {
            {1, 2, 3},
            {4, 5, 6},
            {7, 8, 9}
        };

        System.out.println("์ฒซ ๋ฒˆ์งธ ํ–‰, ์ฒซ ๋ฒˆ์งธ ์—ด์˜ ๊ฐ’: " + matrix[0][0]); // 1
        System.out.println("๋‘ ๋ฒˆ์งธ ํ–‰, ์„ธ ๋ฒˆ์งธ ์—ด์˜ ๊ฐ’: " + matrix[1][2]); // 6
    }
}

์ถœ๋ ฅ ๊ฒฐ๊ณผ:

์ฒซ ๋ฒˆ์งธ ํ–‰, ์ฒซ ๋ฒˆ์งธ ์—ด์˜ ๊ฐ’: 1  
๋‘ ๋ฒˆ์งธ ํ–‰, ์„ธ ๋ฒˆ์งธ ์—ด์˜ ๊ฐ’: 6  

4. 2์ฐจ์› ๋ฐฐ์—ด ์ˆœํšŒ

2์ฐจ์› ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ถœ๋ ฅํ•˜๋ ค๋ฉด ์ค‘์ฒฉ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ: 2์ฐจ์› ๋ฐฐ์—ด ์ˆœํšŒ

public class ArrayIteration {
    public static void main(String[] args) {
        int[][] matrix = {
            {1, 2, 3},
            {4, 5, 6},
            {7, 8, 9}
        };

        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                System.out.print(matrix[i][j] + " ");
            }
            System.out.println();
        }
    }
}

์ถœ๋ ฅ ๊ฒฐ๊ณผ:

1 2 3  
4 5 6  
7 8 9  

5. ์‹ค์ƒํ™œ ํ™œ์šฉ ์˜ˆ์ œ

5.1 ๊ฒŒ์ž„์˜ ๋ณด๋“œํŒ

2์ฐจ์› ๋ฐฐ์—ด์€ ์ฒด์ŠคํŒ์ด๋‚˜ ํผ์ฆ ๊ฒŒ์ž„๊ณผ ๊ฐ™์€ ๋ณด๋“œํŒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

public class GameBoard {
    public static void main(String[] args) {
        char[][] board = {
            {'X', 'O', 'X'},
            {'O', 'X', 'O'},
            {'X', 'O', 'X'}
        };

        for (int i = 0; i < board.length; i++) {
            for (int j = 0; j < board[i].length; j++) {
                System.out.print(board[i][j] + " ");
            }
            System.out.println();
        }
    }
}

์ถœ๋ ฅ ๊ฒฐ๊ณผ:

X O X  
O X O  
X O X  

5.2 ํ•™์ƒ ์„ฑ์  ๊ด€๋ฆฌ

๊ฐ ํ•™์ƒ์˜ ๊ณผ๋ชฉ๋ณ„ ์ ์ˆ˜๋ฅผ ์ €์žฅํ•˜๊ณ  ํ‰๊ท ์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

public class StudentScores {
    public static void main(String[] args) {
        int[][] scores = {
            {85, 90, 80}, // ํ•™์ƒ 1์˜ ์ ์ˆ˜
            {78, 88, 92}, // ํ•™์ƒ 2์˜ ์ ์ˆ˜
            {95, 91, 89}  // ํ•™์ƒ 3์˜ ์ ์ˆ˜
        };

        for (int i = 0; i < scores.length; i++) {
            int sum = 0;
            for (int j = 0; j < scores[i].length; j++) {
                sum += scores[i][j];
            }
            double average = (double) sum / scores[i].length;
            System.out.println("ํ•™์ƒ " + (i + 1) + "์˜ ํ‰๊ท  ์ ์ˆ˜: " + average);
        }
    }
}

์ถœ๋ ฅ ๊ฒฐ๊ณผ:

ํ•™์ƒ 1์˜ ํ‰๊ท  ์ ์ˆ˜: 85.0  
ํ•™์ƒ 2์˜ ํ‰๊ท  ์ ์ˆ˜: 86.0  
ํ•™์ƒ 3์˜ ํ‰๊ท  ์ ์ˆ˜: 91.66666666666667  

5.3 ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ ์ €์žฅ

์ด๋ฏธ์ง€์˜ ํ”ฝ์…€ ๋ฐ์ดํ„ฐ๋Š” ๋ณดํ†ต 2์ฐจ์› ๋ฐฐ์—ด๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ํ”ฝ์…€์˜ ๋ฐ๊ธฐ ๊ฐ’์„ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

public class ImageData {
    public static void main(String[] args) {
        int[][] pixels = {
            {255, 128, 64},
            {128, 64, 32},
            {64, 32, 16}
        };

        for (int i = 0; i < pixels.length; i++) {
            for (int j = 0; j < pixels[i].length; j++) {
                System.out.print(pixels[i][j] + " ");
            }
            System.out.println();
        }
    }
}

์ถœ๋ ฅ ๊ฒฐ๊ณผ:

255 128 64  
128 64 32  
64 32 16  

6. ๋‹ค์ฐจ์› ๋ฐฐ์—ด ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญ

  • ์ธ๋ฑ์Šค ๋ฒ”์œ„: ์ธ๋ฑ์Šค๊ฐ€ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ArrayIndexOutOfBoundsException์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฐฐ์—ด: Java์—์„œ๋Š” ํ–‰๋งˆ๋‹ค ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅธ ๊ฐ€๋ณ€ ๊ธธ์ด ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

Java์˜ ๋‹ค์ฐจ์› ๋ฐฐ์—ด์€ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ๋ณด๋“œ, ํ•™์ƒ ์„ฑ์  ๊ด€๋ฆฌ, ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋“ฑ ๋‹ค์–‘ํ•œ ์‹ค์ƒํ™œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ ์†Œ๊ฐœํ•œ ๊ฐœ๋…๊ณผ ์˜ˆ์ œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋‹ค์ฐจ์› ๋ฐฐ์—ด์„ ์ ๊ทน ํ™œ์šฉํ•ด ๋ณด์„ธ์š”!

๋Œ“๊ธ€ ์“ฐ๊ธฐ