관리 메뉴

나만을 위한 블로그

[DS] 배열이란? 배열 사용법 (Kotlin) 본문

개인 공부/Data structure

[DS] 배열이란? 배열 사용법 (Kotlin)

참깨빵위에참깨빵 2023. 2. 5. 03:17
728x90
반응형

처음 알고리즘 문제를 풀다 보니 배열을 써서 푸는 경우를 많이 봤다. 안드로이드에서 배열은 그렇게 잘 사용하지 않았던 요소라서 배열에 대해 정리해두는 게 좋겠다 싶어서 정리하게 됐다.

위키백과에서 말하는 배열은 아래와 같다.

 

https://en.wikipedia.org/wiki/Array_(data_structure) 

 

Array (data structure) - Wikipedia

From Wikipedia, the free encyclopedia Type of data structure This article is about the byte-layout-level structure. For the abstract data type, see Array (data type). In computer science, an array is a data structure consisting of a collection of elements

en.wikipedia.org

배열은 요소(값 또는 변수)의 모음으로 구성된 자료구조며 각 요소는 하나 이상의 배열 인덱스 또는 키로 식별된다. 각 요소의 위치가 수학 공식에 의해 인덱스 튜플에서 계산될 수 있도록 배열이 저장된다. 가장 간단한 자료구조는 1차원 배열이라고도 하는 선형 배열이다...(중략)...배열의 첫 번째 요소의 메모리 주소는 1번째 주소, 기초 주소 또는 기본 주소라고 한다. 행렬의 수학적 개념은 2차원 그리드로 표현될 수 있기 때문에 2차원 배열을 매트릭스라고도 한다
배열은 가장 오래되고 중요한 자료구조 중 하나고 거의 모든 프로그램에서 쓰인다. 또한 리스트 및 문자열 같은 다른 많은 자료구조를 구현하는 데 쓰인다...(중략)...배열은 런타임에 요소 인덱스를 계산할 수 있기 때문에 주로 유용하다. 뭣보다 이 기능을 쓰면 단일 반복문에서 배열의 많은 요소를 임의로 처리할 수 있다. 이런 이유로 배열의 요소는 같은 크기를 가져야 하며 같은 데이터 표현을 사용해야 한다
배열은 리스트, 힙, 해시 테이블, deque, 큐, 스택, 문자열, VList 같은 다른 자료구조 구현에 사용된다. 다른 자료구조의 배열 기반 구현은 종종 단순하고 공간 효율적(암시적 자료구조)이며 공간 오버헤드가 거의 필요하지 않지만 트리 기반 자료구조와 비슷할 때, 특히 수정할 때 공간 복잡성이 낮을 수 있다
저장 및 선택 모두 일정 시간을 갖는다. 배열은 보유하고 있는 요소 n의 수에서 선형 O(n) 공간을 차지한다

 

https://ko.wikipedia.org/wiki/%EB%B0%B0%EC%97%B4

 

배열 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 컴퓨터 과학에서 배열(영어: array, 配列·排列, 문화어: 배렬)은 번호(인덱스)와 번호에 대응하는 데이터들로 이루어진 자료 구조를 나타낸다. 일반적으로 배열

ko.wikipedia.org

배열은 번호(인덱스)와 번호에 대응하는 데이터들로 이뤄진 자료구조를 나타낸다. 일반적으로 배열에는 같은 종류의 데이터들이 순차 저장되어 값의 번호가 곧 배열의 시작점으로부터 값이 저장돼 있는 상대적인 위치가 된다. 대부분 프로그래밍 언어에서 쓸 수 있는 가장 기초적인 자료구조로 기본 용도 외에 다른 복잡한 자료구조들을 표현하기 위해 or 행렬, 벡터 등을 컴퓨터에서 표현하는 용도 등으로 쓰인다

 

이제 간단한 예시를 확인해본다.

 

fun main() {
    /**
     * Array(3) { i -> i } : 크기가 3인 배열을 선언하고 배열 안의 요소들을 "0, 1, 2"으로 초기화한다
     * Array(3) { 0 } : 크기가 3인 배열을 선언하고 배열 안의 요소들을 "0, 0, 0"으로 초기화한다
     */
    val arr = Array(3) { i -> i }
    println(arr[0])
    for (i in arr) {
        println(i)
    }
    println("==========================================================")

    val arr2 = arrayOf(1, 2, 3)
    println(arr2[1])
    println("==========================================================")

    /**
     * arrayOfNulls<타입>(크기) : 초기값이 null로 되어 있는 배열 생성
     */
    val arr3 = arrayOfNulls<Int>(10)
    println(arr3[0])
    println("==========================================================")

    /**
     * emptyArray<타입>() : 크기가 0인 빈 배열을 만든다. 이 배열에는 값을 할당할 수 없다. 할당 시 예외가 발생한다
     */
    val arr4 = emptyArray<Int>()
    println(arr4.size)
}

/*
0
0
1
2
==========================================================
2
==========================================================
null
==========================================================
0
 */
반응형
Comments