안녕하세요. 로이손입니다.
오늘부터는 그동안 올리고 싶었던 자료구조 시리즈를 올려보려고 합니다.
이 글을 올리는 목적은 2가지인데요.
첫 번째는 정확하고 간결한 정보 전달.
두 번째는 자료구조에 대한 기본기 강화입니다.
그럼 바로 본론으로 시작할게요!
자료구조(Data structure)란?
저만의 정의를 내려보면,
현실 세계의 데이터를 컴퓨터 내에서 처리하기 위해 정해진 방식으로 저장, 관리하는 방식!
이라고 생각합니다.
간단한 예시로, 매표소에 창구를 몇 개를 설치하는게 좋을지 관리자 입장에서 고민이 될 수 있습니다. 비용을 생각한다면 1개가 좋겠지만, 고객의 대기시간을 고려하면 너무 적어서도 안되겠죠. 그래서 알고리즘을 이용하여 최적의 매표소 개수를 찾아낼 수 있습니다. 그럼 알고리즘을 이용하기 위해 고객들이 오는 시간, 어떤 방식으로 대기가 처리되는지 등을 정의해야겠죠?! 이럴 때 필요한 것이 바로 자료구조입니다. 먼저 온 순서대로 처리되는 FIFO(선입선출)방식을 해결하기 위해 Queue를 이용할 수 있습니다.
그럼, 오늘은 첫 시간이므로 배열부터 시작하겠습니다.
1. 배열 정의
- 가장 기본적인 형태의 자료구조 중의 하나이며, 같은 DataType(자료형)들로 모인 것입니다.
예) 어떤 반에서 수학 시험을 봤을 때, [77점, 66점, 81점, ...] 과 같이 숫자형 자료형으로 모인 데이터 집합을 배열로 정의할 수 있습니다.
2. 배열의 형식
- 아래와 같이 int[] a 도 가능하며, int b[] 와 같이 선언이 가능합니다.
int는 자료형을 의미하며, [ ] 는 배열의 선언을 의미합니다. a와 b는 배열명입니다.
배열은 참조방식이므로 new 연산자를 이용하였으며, int[3]과 int[10]은 int라는 자료형의 배열 공간을 3개, 10개 만들겠다는 의미입니다.
3. 배열의 초기값
- 위에서 만든 a라는 배열 변수를 아래와 같이 표현해보았습니다.
- new 연산자를 이용해 만든 a와 b라는 배열은 0으로 초기화되어있습니다.
4. 배열 대입 및 호출
- 배열에 값 대입
1) a[0] = 1 과 같이 원하는 배열 공간에 직접 대입하는 방법
2) int[] a = {1,2,5} 와 같이 중괄호와 쉼표를 이용하여 대입하는 방법
- 배열에서 값 호출
a[0]와 같이 원하는 배열변수에서 특정 위치를 기입하여 호출합니다.
아래의 예시에서는 for문을 이용하여 "대입 전 값"과 "대입 후 값"을 호출하였습니다.
- 배열변수명.length는 크기를 나타냅니다. 아래에서 a.length는 3을 나타내죠~
5. 배열 복제(Clone)
- 아래와 같이, 복사할 배열.clone() 을 활용하면 배열 복제가 가능합니다.
- 저는 a라는 배열을 Source로, copyA라는 배열을 Target으로 하여, 복제해보았습니다.
오늘은 기본기 다지는 시간이었던 거 같아요. 다음부터는 점차 난이도를 높여가도록 해보겠습니다!
감사합니다.