🔥 다차원 배열

481자
6분

강의 목차

Go 언어에서는 배열 안에 배열을 넣어 다차원 배열을 만들 수 있습니다. 다차원 배열은 [n1][n2]...[nm]T 형태로 선언할 수 있는데, 여기서 n1, n2, ..., nm은 각 차원의 크기를, T는 배열 요소의 타입을 나타냅니다.

예를 들어, 다음과 같이 2차원 배열을 선언할 수 있습니다.

var matrix [2][3]int
 
go

이 코드는 matrix라는 이름의 변수를 선언하고, 2행 3열의 정수 요소를 가진 2차원 배열로 초기화합니다.

다차원 배열도 배열 리터럴을 사용하여 초기화할 수 있습니다. 다음은 2차원 배열을 초기화하는 예제 코드입니다.

package main
 
import "fmt"
 
func main() {
    var matrix [2][3]int = [2][3]int{
        {1, 2, 3},
        {4, 5, 6},
    }
    fmt.Println(matrix)
 
    var matrix2 = [2][2]string{
        {"C", "C++"},
        {"Java", "Go"},
    }
    fmt.Printf("%q\n", matrix2)
}
 
go

이 코드는 다음과 같은 단계로 실행됩니다.

  1. var matrix [2][3]int = [2][3]int{{1, 2, 3}, {4, 5, 6}}으로 2행 3열의 정수 요소를 가진 2차원 배열 matrix를 선언하고 초기화합니다.
  2. fmt.Println(matrix)matrix 배열 전체를 출력합니다.
  3. var matrix2 = [2][2]string{{"C", "C++"}, {"Java", "Go"}}로 2행 2열의 문자열 요소를 가진 2차원 배열 matrix2를 선언하고 초기화합니다.
  4. fmt.Printf("%q\n", matrix2)matrix2 배열 전체를 문자열 형태로 출력합니다.

이 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

[[1 2 3] [4 5 6]]
[["C" "C++"] ["Java" "Go"]]
text

물론이에요! 3차원 배열 예제를 추가해 보겠습니다. 다음과 같이 내용을 이어갈 수 있겠네요.

3차원 배열

Go 언어에서는 3차원 이상의 배열도 만들 수 있습니다. 3차원 배열은 [n1][n2][n3]T 형태로 선언할 수 있는데, 여기서 n1, n2, n3은 각 차원의 크기를, T는 배열 요소의 타입을 나타냅니다.

예를 들어, 다음과 같이 3차원 배열을 선언할 수 있습니다.

var cube [2][3][4]int
 
go

이 코드는 cube라는 이름의 변수를 선언하고, 2 x 3 x 4 크기의 정수 요소를 가진 3차원 배열로 초기화합니다.

3차원 배열도 배열 리터럴을 사용하여 초기화할 수 있습니다. 다음은 3차원 배열을 초기화하는 예제 코드입니다.

package main
 
import "fmt"
 
func main() {
    var cube [2][2][2]int = [2][2][2]int{
        {
            {1, 2},
            {3, 4},
        },
        {
            {5, 6},
            {7, 8},
        },
    }
    fmt.Println(cube)
 
    var colors = [2][2][3]string{
        {
            {"Red", "Green", "Blue"},
            {"Cyan", "Magenta", "Yellow"},
        },
        {
            {"Purple", "Orange", "Pink"},
            {"Brown", "Gray", "White"},
        },
    }
    fmt.Printf("%q\n", colors)
}
 
go

이 코드는 다음과 같은 단계로 실행됩니다.

  1. var cube [2][2][2]int = ...로 2 x 2 x 2 크기의 정수 요소를 가진 3차원 배열 cube를 선언하고 초기화합니다.
  2. fmt.Println(cube)cube 배열 전체를 출력합니다.
  3. var colors = [2][2][3]string{...}로 2 x 2 x 3 크기의 문자열 요소를 가진 3차원 배열 colors를 선언하고 초기화합니다.
  4. fmt.Printf("%q\n", colors)colors 배열 전체를 문자열 형태로 출력합니다.

이 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

[[[1 2] [3 4]] [[5 6] [7 8]]]
[[["Red" "Green" "Blue"] ["Cyan" "Magenta" "Yellow"]] [["Purple" "Orange" "Pink"] ["Brown" "Gray" "White"]]]
text

3차원 배열은 큐브나 3D 공간 데이터를 표현하는 데 사용될 수 있습니다. 물론 더 높은 차원의 배열도 만들 수 있지만, 가독성과 관리 측면에서 주의가 필요합니다. 일반적으로는 슬라이스나 맵 등의 자료구조를 활용하는 것이 더 효과적일 수 있습니다.

이처럼 Go 언어에서는 다차원 배열을 통해 행렬과 같은 구조를 표현할 수 있습니다. 다차원 배열은 데이터를 체계적으로 구성하고 처리하는 데 유용하게 활용될 수 있습니다.