Pink Transparent Star

C#/개념 공부

[ 내일배움캠프 ] TIL.11 - 자료구조 ( 배열 & 리스트 )

채유나 2024. 4. 29. 22:42
728x90

 

 

튜터님께서 배열과 리스트에 대해 강의를 해주셨습니다. 이해한 내용을 정리해보고자 합니다!

🔷 배열(Array)이란? 

▪실행 중 수정 할 수 없는 고정 길이를 가진 동일한 타입의 변수를 모아놓은 데이터 집합

System.Array 네임페이스에서 사용

🔗 변수 이동하기 

 

🔸 Array 사용하는 이유

예를 들어 사람들의 나이를 변수에 담는다고 가정하면 아래와 같이 변수를 선언해야한다.

int peopleAge_1 = 20;
int peopleAge_2 = 21;
int peopleAge_3 = 22;
int peopleAge_4 = 23;
int peopleAge_5 = 24;

...

int peopleAge_10 = 30;

 

확인을 해보면 관리해야하는 사람이 50명이면 50번의 변수를 선언해야하며 변수를 접근하여 값을 얻어올 때 상당히 불편함과 비효율적인 것을 알 수 있습니다.

 

여기서 위의 코드를 배열을 사용하게 되면 코드의 비효율성을 감소와 변수에 접근하는 문제를 해결 할 수 있습니다.

int[] peopleAges = new int[10]{20,21,22,23...30}

 

하지만 배열에 접근하기 위해선 index로 접근을 하는데 이때 배열의 index 값은 0부터 시작합니다.

아래는 배열을 접근하는 예제입니다.

Console.WriteLine($"people[0] = {people[0]}"); //people[0] = 20
Console.WriteLine($"people[1] = {people[1]}"); //people[1] = 21
Console.WriteLine($"people[2] = {people[2]}"); //people[2] = 22

...

 

결과를 확인해보면 일일히 변수를 선언하여 접근을 하는 것보다 배열의 인덱스를 이용하여 접근하는 방법이 매우 간단하고 유용합니다.!

 

🔸Array 선언 방법

자료형[] 배열명 = new 자료형[크기];

 

🔸 Array 장점

◾ 하나의 배열내에 여러 자료형의 데이터를 담을 수 있음

◾ 하나의 변수에 여러 데이터를 관리할 수 있음

◾ 코드의 가독성이 높아지고 연산이 편리해짐

◾ 관련성 있는 데이터를 변수에 저장하기 때문에 데이터 찾는데 용이함

 


 

🔷 리스트(List)란?

▪index 또는 loop를 통해 액세스할 수 있는 강력한 형식의 개체 컬렉션을 나타나는데 사용되는 제네릭 형식

System.Collection.Generic 네임스페이스에서 사용

🔗 리스트 이동하기

 

🔸 List를 사용하는 이유

배열의 문제점을 해결하기 위한 자료구조이다.  데이터의 크기를 알 수 있으면 배열을 쓰는 것이 가장 좋지만 배열 안에 얼마나 들어갈지 모 른다면 List를 사용하는 것이 좋습니다.

List<int> peopleAges = new List<int>() {20,21,22 ... 30}

 

배열과 동일하게 index로 접근을 할 수 있으며,  index 값은 0부터 시작합니다.

Console.WriteLine($"people[0] = {people[0]}"); //people[0] = 20
Console.WriteLine($"people[1] = {people[1]}"); //people[1] = 21
Console.WriteLine($"people[2] = {people[2]}"); //people[2] = 22

...

 

🔸 List 선언 방법

List<자료형> 변수명 = new List <자료형>();

 

🔸 List의 장점

◾ 포인터를 통하여 다음 데이터의 위치를 가르켜 삽입, 삭제가 용이함

◾ 메모리 공간의 크기를 동적으로 변경 가능, 크기가 가변이다.

◾ 불연속적으로 메모리 관리가 편함

◾ 메모리의 재사용이 편리

 

🔷 Array와 List 비교

파라미터 List Array
길이 추가되거나 제거 될때 동적으로 사이즈 변경 크기가 고정
동일한 데이터 유형의 고정된 개수의 요소만 저장
메모리 동적이며 무작위 정적이며 연속적
메모리 효율적
활용 데이터를 자주 추가, 제거할 때 유용 변경 가능성이 없는 고정된 수의 요소, 비순차적 방식으로 자주 액세스 하는 경우 편리
속도 실행 속도가 느림 실행 속도가 빠름
메모리관리 메모리 낭비가 없음 ▪고정 크기의 메모리로 할당 된 후 새 항목이 추가 될 때까지 사용되지 않은 상태로 유지

▪다른 프로세스에 할당 할 수 없어 메모리 낭비 발생
메모리 구조 ▪비연속 메모리 할당 수행
▪프로세스를 다양한 블록으로 분리
이후 메모리 공간 가용성에 따라 메모리의 다른 주소 공간에 배치
▪연속 메모리 할당 수행
▪요구사항에 따라 프로세스에 단일 연속 메모리 블록 할당

 

 

728x90