주인장의 프로그래밍 개발 공부방

[Chapter 5 배열] 1. 배열이란? 본문

프로그래밍 기본 지식/Chapter 5 배열

[Chapter 5 배열] 1. 배열이란?

거신 2019. 8. 27. 09:08

이제 프로그래밍에 대한 기본 지식의 끝에 다다르고 있다.

이번에 배우는 배열까지 배운다면 자바라는 언어 뿐만 아니라

다른 프로그래밍 언어를 공부하더라도 크게 문제가 없을 것이다.

즉, 지금까지 공부한 내용들이 프로그래밍에 있어서 기반이 되고

어디에서든 사용된다는 점을 잊지 않길 바란다.

이번 시간에는 배열에 대해서 알아보려고 한다.

 

목표 : 배열이 무엇을 의미하는지 이해하고 어떠한 특징을 가지고 있는지 알 수 있다.

 

1. 배열이 왜 등장하게 됨?

 

우리가 맨 처음에 배웠던 변수의 기억을 다시 소환해보자.

뜬금없이 배열을 공부하는데 무슨 변수를 생각하라니 아이러니하겠지만

배열이라는 녀석은 변수와 아주 밀접한 관련이 있는 녀석이 되겠다.

 

일단 변수에 대해서 다시 상기시켜보자.

변수어떠한 하나의 값을 저장하는 저장 공간이라고 우리는 너무나 잘 알고 있다.

그런데 여기에서 한 가지 의문이 발생한다.

변수라는 것은 단 하나의 값만 저장하는 공간인데

여러 개의 값을 저장하는 방법은 없는 것일까? 라는 부분이다.

변수에 새로운 값들을 계속해서 저장하면

이전에 있던 값들은 사라지고 새로 저장한 값만 남아있게 된다.

그렇기 때문에 원래 있는 값을 남겨두면서 새로운 값을 저장하기 위해선

새로운 변수를 생성해서 새로운 값을 저장하는 방법 밖에 없었다.

 

물론 이러한 방법으로 여러 개의 값을 저장하면 문제는 없다.

가령 100개의 값을 저장하려면 100개의 변수를 선언하면 된다.

그런데 우리는 지금까지 알지 못했지만 여기에서 문제가 하나 발생하게 된다.

바로 각 변수 간의 연관성이다.

 

예를 들어보자.

만약 값을 100개를 저장하기 위해 변수명이 var인 변수를 100개를 선언한다고 생각해보자.

변수명이 겹치면 안되니까 var1부터 시작해 var100까지 선언했다.

우리는 변수명을 1부터 100까지 연속적으로 적었기 때문에

우리 눈에는 100개의 변수가 연관이 있는 것처럼 보이지만

사실 메모리 상에서 보면 이 100개의 변수들은 어떠한 연관도 없는

각각의 변수일 뿐이다.

그러니까 연관도 연속도 하지 않는 그냥 100개의 개별적인 변수라는 말이다.

 

거기다 우리가 이렇게 변수를 선언해야 한다고 생각해보라.

 

예시1)

 

int var1 = 1;

int var2 = 2;

int var3 = 3;

int var4 = 4;

....

int var100 = 100;

 

이런 식으로 아주아주 무의미한 반복 작업과 줄 낭비가 발생했을 것이다.

특히나 변수명은 우리들이 마음대로 지정하는 것이기 때문에 for문을 사용할 수도 없어서

결국 저러한 반복 작업이 필수적이다.

얼마나 쓸데없는 일을 하고 있는지 아마 직접 하지 않아도 너무나도 잘 알 것이다.

(물론 완전히 다른 값들을 여러개 선언해야 한다면 당연히 저렇게 해야겠지만)

 

그래서 등장한 것이 바로 배열이라는 녀석이다.

우리가 연관된 값들을 한 번에 관리하고 처리할 수 있도록 해주는 녀석인데

위의 반복작업을 획기적으로 줄여줄 수 있는 것이기도 하다.

 

2. 배열이란?

 

그렇다면 배열이라는게 무엇인지에 대해서 살펴볼 필요가 있겠다.

배열같은 데이터 타입의 여러 변수를 하나의 묶음으로 다루는 것을 말한다.

즉, 앞서 우리가 연관있는 값들을 한 번에 처리하는데 아주아주 좋은 녀석이라고 할 수 있겠다.

따라서 예시1과 같이 변수 100개가 각각 존재한다면 이 100개의 변수는

모두 관련이 없는 각각 고유한 변수이데 반해,

이 것을 배열로 처리하면 연속적인 변수로 처리되기 때문에 보다 효율적인 프로그래밍이 가능하다.

그렇다면 어떻게 차이가 있다는 것일까?

그 차이를 알아보기 위해 아래의 그림을 한 번 보자.

 

그림1)

일반 변수와 배열의 차이

그림1을 봐도 알겠지만 우리가 그냥 변수를 6개를 선언하면

아무리 변수명이 이름순으로 되어 있어도 이 변수들은 모두 관련이 전혀 없다.

각각 하나의 변수일 뿐이다.

하지만 이걸 배열로 만든다면 모든 변수가 연속적으로 이어져 있는 것을 알 수 있다.

그렇기 때문에 각각 나뉘어 있는 것보다

훨씬 여러 데이터를 처리하는데 유리하다는 것을 어느정도는 유추할 수 있을 것이다.

 

그리고 반복문에서도 잠깐 언급했었지만

반복문배열과 굉장히 궁합이 잘 맞는다고 했었다.

아니 배열을 사용하기 위해선 반복문이 필수라고 해도 과언이 아닐 정도인데

이 부분은 다음 시간에 알아보도록 하자.

 

3. 마무리

 

우리는 앞서 하나의 값을 저장할 수 있는 변수에 대해서 공부했었는데

변수에는 단 하나의 값만 저장할 수 있기 때문에

여러 값을 저장하기 위해선 또다른 변수들이 필요해졌다.

그런데 일반적인 방법으로 변수를 선언하면 선언할 때마다

각각 연관이 없는 각개의 변수가 되어버려서 여러 값을 처리하는데 어려움이 있었다.

그래서 여러 값을 연속적으로 이어주는 역할을 하는 배열에 대해서 알아봤다.

배열에서는 여러 변수들을 하나로 묶어주기 때문에

여러 값을 처리하는데 굉장히 유용하다.

Comments