본문 바로가기

Language/Structure

[Structure] Array (배열)

Array ( 배열 )

  • 번호(인덱스)와 번호에 대응하는 데이터들로 이루어진 자료구조
  • 배열을 구성하는 단위 데이터를 element(원소) 라고 한다.
  • 배열의 크기를 줄이거나 늘리고 싶다면, 동적으로는 불가능하고 재선언을 해야한다.
  • 이차원 배열, 다차원 배열도 생성이 가능하다.

1. 배열의 구조

2. 배열의 선언

3. 배열의 사용

4. 배열의 활용


1.  배열의 구조

  • 예를들어 1,3,5,7이라는 데이터를 담고있는 배열은 위와같은 구조로 이루어져있다.
  • INDEX는 1이 아닌 0부터 시작한다. List도 같은 개념으로 INDEX는 1부터 시작하므로, 자주 사용하기때문에 익숙해져야한다.
  • INDEX가 있기때문에 접근하고 싶은 DATA에 바로 접근이 가능하다. ex) arr[0] = 1, arr[1] = 3 
  • 위 배열의 길이는 4이다. arr.length = 4

2. 배열의 선언

public class Main {
    public static void main(String[] args) {
        int[] arr = {1,2,3};

        System.out.print(arr[0]);
        System.out.print(arr[1]);
        System.out.print(arr[2]);
        
    }
}
  • 위와같이 배열을 선언하면서 배열에 값을 담을수있다.
  • 위 코드를 실행하게되면, 123 이 출력된다.
public class Main {
    public static void main(String[] args) {
        int[] arr = new int[3];

        arr[0] = 1;
        arr[1] = 2;

        System.out.print(arr[0]);
        System.out.print(arr[1]);
        System.out.print(arr[2]);

    }
}
  • 위 코드에서처럼 배열을 선언하면서 배열의 길이를 미리 설정해줄수있다.
  • 위 코드를 실행하게되면 120 이 출력된다.
  • (길이를 설정하고 값을 설정해주지않은 빈 배열은 0이 채워져있다.)
public class Main {
    public static void main(String[] args) {
        int[][] arr = {{1,2,3},{4,5,6}};

        System.out.print(arr[0][0]);
        System.out.print(arr[0][1]);
        System.out.print(arr[0][2]);

        System.out.println();

        System.out.print(arr[1][0]);
        System.out.print(arr[1][1]);
        System.out.print(arr[1][2]);

    }
}
  • 2차원 배열의 선언.
  • 1차원 배열때와 마찬가지로 위코드처럼 값을 미리 넣을수도있고, 배열의 길이를 미리 설정해줄수도있다.
  • 인덱스에 접근할땐, 1차원배열에선 바로 접근하였지만, 2차원배열을 [0][0] 처럼 1차원 의 인덱스와 2차원인덱스를 다 접근하여야한다.
  • 위 코드를 실행하면 123 456 이 출력되어진다.

3. 배열의 사용

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

        for(int i=0; i<arr.length; i++) {
            System.out.println(arr[i]);
        }

    }
}
  • 배열의 사용법은 여러가지가 있지만, 대표적으로 for문을 사용하여 index에 접근하고 값을 출력하는 코드를 작성하였다.
  • 위 코드는 실행하게 되면 배열에 선언해놓은 12345678910 이 순서대로 출력되어진다.
  • for문의 i가 0부터 1씩 증가되는 방식을 사용하여 arr의 인덱스에 접근한것이다.
public class Main {
    public static void main(String[] args) {
        int[] arr = new int[10];

        for(int i=0; i<arr.length; i++) {
            arr[i] = i+1;
        }
        
        for (int i=0; i<arr.length; i++) {
            System.out.println(arr[i]);
        }

    }
}
  • 위 코드는 10의 길이로 선언된 배열에 for문의 i증가 방식을 통해 값을 넣었다.
  • 위 코드는 실행하게되면 12345678910 이 순서대로 출력된다.

4. 배열의 활용

public class Main {
    public static void main(String[] args) {
        int[] arr = new int[5];

        Scanner sc = new Scanner(System.in);

        for (int i=0; i<arr.length; i++) {
            arr[i] = sc.nextInt();
        }

        for (int i=0; i<arr.length; i++) {
            for (int j=0; j<arr.length-1; j++) {
                if (arr[j] > arr[j+1]) {
                    int temp = arr[j+1];
                    arr[j+1] = arr[j];
                    arr[j] = temp;
                }
            }
        }

        for(int i=0; i<arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}
  • 배열을 사용하여 입력받은 값들을 정렬하거나 합칠수있다.
  • Arrays.sort를 사용하여 정렬할수도있지만, 버블정렬을 구현해보았다.
    • 5 길이의 배열을 선언해준다.
    • 해당 배열에 Scanner를 통해 값을 입력받는다.
    • 랜덤으로 들어온 값들을 버블정렬을 통해 오름차순 정렬해준다. 
  • 배열을 설명하는 글이기때문에 버블정렬은 따로 설명하지않도록한다.

'Language > Structure' 카테고리의 다른 글

[Structure] Queue (First In First Out)  (0) 2021.11.07
[Structure] Stack (Last In First Out)  (0) 2021.11.07