컴퓨터/프로그래밍

프로그램밍 기초 - 배열, 리스트

푸른바다23 2017. 7. 29. 16:57

프로그램밍 기초 - 배열, 리스트


지난번에는 변수에 대해서 배웠습니다. 

먼저 변수에 대해서 복습해봅시다. 

변수란 값을 저장하는 공간을 의미한다고 배웠습니다. 

변수는 변수타입 , 변수명 , 초기값으로 세팅을 하고 

변수타입에는 int, float, string, boolean 등이 있으며 변수명은 마음대로 정할 수 있으나 몇가지 규칙이 있었습니다. 

변수명은 숫자로 시작할 수 없으며 , 예약어(프로그램내에서 사용하는 단어)는 쓸수 없으며 특수문자는 _, $만 사용이 가능합니다. 

변수명은 또한 대소문자 구분하니 대소문자 구분하여 사용한다고 배웠습니다.


오늘은 변수의 심화편인 배열과 리스트에 대해서 배워보겠습니다.

배열과 리스트는 변수들의 집합입니다.

상황에 따라 배열과 리스트를 골라서 쓰며 됩니다. 


배열을 먼저 배워보겠습니다. 

int형의 변수 10개가 필요하다고 가정해봅시다.

변수만 배운 여러분은 int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0.i=0,j=0; 이렇게 10개의 변수를 선언할 것입니다. 

이러면 변수명 10개만 되어도 힘든데 100개면 어떻게 될까요? 변수명 짓다가 한시간이 지나버릴 수 있습니다.

그래서 배열이라는 개념이 생겼습니다. 

int a[10];하면 int변수 10개를 가진 배열이 생성됩니다. 100개는 숫자만 바꾸어주면 됩니다. int a[100]; 이렇게 생성하면됩니다.

배열은 개수가 구체적으로 정해졌을 때 사용할 수 있습니다. 

또한 배열은 나중에 배울 반복문을 가지고 여러값을 손쉽게 처리하고, 출력하고, 계산할 수 있습니다. 

(이 부분은 나중에 다시 설명해드리겠습니다. )


리스트는 가변적인 경우에 많이 씁니다. 

리스트는 각 변수의 마지막 부분에 다음 값의 위치를 알려줍니다. 

사람들이 허리를 잡고 기차놀이를 하는 모습을 생각하시면 됩니다. 

그 모습이 리스트의 모습이라고 할 수 있습니다. 

리스트는 그래서 추가 할 때 마지막에 붙어서 바로 앞에 있는 값에게 너의 뒤의 값은 이 친구야라고 알려주기만 하면 됩니다. 

그래서 가변적인 경우 많이 씁니다. 


그럼 배열과 리스트 어떤 차이가 있고 어떤 장단점이 있을지 알아봅시다. 

처리 속도는 리스트보다 배열이 빠릅니다. 

배열은 아파트처럼 위치가 붙어 있기 떄문에 처음 시작위치 에서 5번째이면  처음 시작위치 + 5 * (변수타입의 크기 ) 를 하면 위치를 바로 알 수 있기 때문에 리스트에 비해서 빠릅니다. 

하지만 리스트는 1번부터 5번까지 하나하나 위치를 파악하며 따라가야하기 때문에 배열과 다르게 느립니다. 


그렇다면 배열만 쓰면 될것 같은데 왜 리스트를 쓰는지 생각해봅시다. 

배열은 중간에 값을 추가 하거나 값을 삭제하기 위해서는 [3번째의 값을 추가하거나 삭제한다고 가정해봅시다. ]

해당위치[3번째]값을 추가하기 위해서는 3번째 뒤의 값들을 한칸씩 미루어야합니다. 

해당위치[3번째]값을 삭제하기 위해서는 3번째 뒤의 값들을 한칸씩 당겨야합니다. 

하지만 리스트는 중간에 2번째 값에게 너의 뒤는 내가 추가하는 값이야라고 정의하고 내가 추가하는 값은 3번째의 위치가 너의 뒤야라고만 알려주면 자연스럽게 연결이 됩니다. 삭제할 경우는 더 쉽습니다. 2번째의 값에게 너의 뒤는 3번재 값이 위치가 아닌 4번째의 위치만 설정해두면 자연스럽게 3번째 값은 연결되지 않습니다. 

이런 이유로 개수가 정해진 경우는 배열을 많이 쓰고 가변적인 경우는 리스트를 많이 씁니다.

또한 값의 추가 삭제가 적은 경우는 배열을 쓰고 많은 경우에는 리스트를 씁니다. 


다음에는 연산자의 계산 및 변수, 배열, 리스트의 추가적인 내용들을 알려드리겠씁니다.


반응형