본문으로 바로가기

알고리즘과 자료구조의 연관성

category 기타 2018. 8. 20. 14:33

*알고리즘 : 문제를 해결하는 방법
*자료구조 : 다른 사람들이 이미 만들어 놓은 데이터를 효율적으로 사용하기 위한 일종의 알고리즘으로서 다른 알고리즘의 베이스가 된다.


우리는 살아가면서 여러 문제를 직면한다.(여기서 문제란 이상이 있는 상태뿐만 아니라 원하는 목적 등을 포함한다.)

예를들어, 배가고플 경우 이러한 문제를 해결하기 위해 여러가지 해결방법이 있을 것이다.

 

1. 인력사무실에 전화 -> 막노동을 한다 -> 돈을 입금받는다 -> 식당에가서 밥을 사먹는다. ->문제해결

2. 인력사무실에 전화 -> 막노동을 한다 -> 돈을 입금받는다 -> 마트에 가서 식자재를 구매한다 -> 요리를한다 ->먹는다 ->문제해결

3. 구인구직 사이트를 검색한다. ->알바면접을 본다 ->일을한다. ->월급을 받는다 ->밥을 사먹는다.

.

.

.

이렇게 문제를 해결하기위한 방법을 알고리즘이라고 한다.

우리는 어떤 방식으로 문제를 해결해야 할지 고민하고 선택할 수 있는데, 같은 문제를 먼저 겪은 사람들이 효율적으로 문제를 해결할 수 있는 방법을 만들어 놓을 수도 있다.

예를들어, 배가 고픈 문제를 해결하기 위해서는 일을 해야하는데 이것은 공통적으로 해결해야하는 일이다. 어떻게하면 돈을 짧은 시간안에 효율적으로 벌수 있을것인가?

 

인력사무실에 전화 -> 막노동을 한다 -> 돈을 입금받는다. 이 방법이 가장 빠를 것이다. 그이후에 밥을 사먹든, 재료를 사서 조리를 하든 여러가지 방법이 또 있을 것이다.

 

이렇게 사람들이 미리 효율적인 방법을 고안해 놓은 알고리즘중 데이터관리와 관련된 알고리즘을 자료구조라 한다.


-요약-

 

C언어 : 자료구조를 하나하나 만들어야함
java언어 :  컬렉션 프레임워크로 이미 만들어서 제공하고 있음


알고리즘 = 문제해결 방법 =>다양한 방법이 있음

but 정해놓은 문제해결 방법이 있음. =>정해져있는 알고리즘(효율적)
수학공식 같은 느낌.

 

알고리즘짤때 고려해야할 것.
1.메모리 사용량
2. 얼마나 적은일로? 효율성

 

 

 

 

수학문제를 풀기위해 우리는 수학자들이 미리 만들어 놓은 수학공식을 사용한다.

그런데 이런 수학공식들 또한 수학자들이 어떤 문제를 직면하고 해결한 후 그 방법을,즉 알고리즘을 남겨놓은 것이다.

==

문제를 해결하기위해 먼저 해결해 놓은 방법을 사용한다.

==

알고리즘을 짜기위해 이미 만들어져 있는 알고리즘을 이용한다.

==

알고리즘을 짜기위해 자료구조를 이용한다.

 

'기타' 카테고리의 다른 글

컴퓨터 언어의 흐름  (0) 2018.09.12
논리연산과 비트논리연산  (0) 2018.08.21
도움이 되는 글 링크  (0) 2018.08.20
UI? API?  (0) 2018.07.08
IT공부를 할때 방법  (0) 2018.07.06