*한글로 공부하지 말고 영어로 공부하자.
*배열은 연속적인 메모상의 동일한 타입의 요소들을 순차적으로 일렬로 저장하는 자료구조
특징-
고정된 크기를 가진다.
배열 요쇼에 엑세스 하려면 인덱스가 필요하다.
인덱스는 0부터 시작해서 n-1까지다.
2차원 배열은 행(row), 열(column)을 갖는 배열을 의미한다.
요소에 접근하려면 index가 두개 필요하다 (row, col)
*가변 배열 (Jagged Array)
배열의 요소가 배열인 경우를 의미한다.
각 배열의 요소는 서로다른 차원과 크기를 갖는 배열일 수 있다.
다차원 배열같은 경우 [ , ]와 같이 콤마로 차원을 분리 했다.
가변 배열의 경우 [ ] [ ]와 같이 배열의 배열처럼 대괄호를 겹쳐서 표현한다.
다차원 배열로 했을 때 공간의 낭비가 심해지는 경우, 각 차원마다 다른 배열 크기를 가져야 하는 경우 유용하다.
int [ ] [ ] arr = new int [ 3 ] [ ] ; --> 노트에 그리기 연습
*정적배열 (Static Array)
일관 타입의 요소들의 집합
크기가 고정
*동적 배열 (Dynamic Array)
필요시 배열의 크기를 확장하거나 축소 하는 기능을 갖는 배열.
새로운 요소가 추가 될 때마다 크기를 하나씩 늘리는 것이다.
기존 배열 (arr)의 크기보다 1개 더 큰 임시 배열 (temp) 생성하고 임시 배열 (temp) 기존 배열 (arr)에 모든 요소를 복사한 후 다시 임시 배열 (temp) 을 기존 배열 (arr)에 할당 하고 마지막 인덱스에 요소를 추가한다.
*동적 배열
검색구간 반복문이 위에 검색에서 찾은 데이터를 저장하는 임시 공간에 저장되고 검색 결과 출력된다.
//이지훈
//2021-09-13
//게임 알고리즘
using System;
using System.IO;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Threading;
namespace Helloworld1
{
class App
{
int[] arr;
//생성자
public App()
{
arr = new int[2];
AddItem(3);
AddItem(5);
AddItem(11);
}
public void AddItem(int item)
{
int emptyIndex = -1; //빈방 인덱스 //(검색에서 찾은 데이터를 저장하는 임시 공간)
//배열의 요소를 순회하며 빈공간 찾기
//0인덱스부터 배열의 길이 -1 (last index)까지
//배열의 요소의 값을 확인 한다 (값이 0인가?)
//여서의 값이 0이라는 뜻은 비어있다 (약속)
for(int i = 0; i < this.arr.Length; i++)
{
//Console.WriteLine(i); //i값은 배열의 인덱스 //(검색 구간 반복문)
if(this.arr[i] == 0)
{
//빈방 찾았다
emptyIndex = i;
break;
}
}
//빈방 인덱스
//Console.WriteLine("emptyIndex: {0}", emptyIndex); //(검색 결과)
if(emptyIndex == -1)
{
//full
//기존배열의 길이보다 1개큰 임시 배열을 생성한다
int[] temp = new int[this.arr.Length + 1];
//기존 배열을 순회 하며 임시 배열에 순서대로 넣어준다
for(int i = 0; i < this.arr.Length; i++)
{
temp[i] = this.arr[i];
}
//값복사 완료
//기본배열(arr)을 임시배열(temp)로 교체한다
this.arr = temp;
//배열에 요소에 값을 넣는다
this.arr[this.arr.Length - 1] = item;
}
else
{
//인덱스에 요소를 할당한다
this.arr[emptyIndex] = item;
}
}
}
}
그려가면서 다시 만들어보기.
순서 생각 해가면서 만들기.
'c# > 수업 내용' 카테고리의 다른 글
배열 swap 그리기 연습 (0) | 2021.09.14 |
---|---|
동적배열 (Dynamic Array)그리기 연습 (0) | 2021.09.14 |
자료구조 (0) | 2021.09.14 |
out, ref 키워드 (0) | 2021.09.13 |
params 키워드 (0) | 2021.09.13 |