Skip to content

Basic Data Structure and Algorithm 01

Byeong Gwan Seo edited this page Sep 10, 2021 · 2 revisions

01. 자료구조란?

데이터 단위와 데이터 자체 사이의 물리적 또는 논리적인 관계
자료를 효율적으로 이용할 수 있도록 컴퓨터에 저장하는 방법을 뜻함.

02. 배열(Array)

배열이란?

//학생들의 시험 성적을 관리할때
int mike;
int thomas;
int jake;
...

학생의 숫자가 적을땐 이렇게 학생 한 명마다 변수를 선언해서 관리할 수 있지만, 학생수가 많을땐 굉장히 번거로워진다.
이럴땐, 학번 또는 출석번호로 줄 세우듯이 '몇 번째 학생' 이라고 지정하면 작업이 편리해진다. "배열(Array)"은 바로 이럴때 사용하는 간단한 자료구조이다.
또한, 같은 자료형의 변수로 이루어진 구성 요소(component)가 직선 모양으로 연속하여 줄지어 있는 구조이다.

int[] student;
int student[];

배열은 위와 같이 선언할 수 있는데, int형인 Array라는 점을 명확하게 나타낼 수 있다는 점에서 전자를 훨씬 많이 사용한다.
그리고 구성 요소의 갯수를 선언하려면 아래와 같이 나타낸다.

a = new int[5];

위 박스의 의미는, 변수 a는 길이가 5인 배열을 참조한다는 뜻이다.
아래 프로그램을 통해 배열의 특성을 확인할 수 있다.

class IntArray {
  public static void main(String[] args) {
   int[] a = new int[5]; // 정수형 배열 a를 선언하고 a의 0~4까지 5개의 인덱스를 지닌 배열임을 선언한다.

   a[1] = 37; // a[1]에 37을 대입
   a[2] = 51;
   a[4] = a[1] * 2; // a[1]에 2를 곱한 값을 a[4]에 대입한다.

   for (int i = 0; i < a.length; i++) // a[0]부터 a[4]까지의 값을 출력한다.
    System.out.println("a[" + i + "] = " + a[i]);
  }
}

result

a[0] = 0 //값을 대입하지 않은 배열의 component는 자동으로 0으로 초기화된다.
a[1] = 37
a[2] = 51
a[3] = 0
a[4] = 74 // a[1] * 2

배열의 선언과 동시에 component value 초기화

값을 대입하지 않은 배열의 component는 자동으로 0으로 초기화 되지만, 배열 초기화를 사용하면 배열의 생성과 동시에 각 component의 초기화가 가능하다.

class IntArrayInit {
 public static void main(String[] args) {
   int[] a = {1, 2, 3, 4, 5};

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

result

a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4
a[4] = 5
int[] a = new int[] {1, 2, 3, 4, 5}

위와 같이 new 연산자를 사용해 좀 더 명확하게 선언할 수 있다.