
데이터가 어떤 구조로 저장되고 어떻게 사용되는지를 나타낸다.
가장 단순한 자료구조는 변수이다.
숫자나 문자열을 저장하기 위해 변수를 사용한다.
그리고 저장한 숫자와 문자열에 접근하고 싶으면 참조한다.
다른 자료구조는 배열이다.
배열에 숫자나 문자열 등을 연속적으로 저장한다. 그리고 해당 숫자나 문자열에 인덱스로 접근해 참조한다.
알다시피 배열은 변수와 달리 데이터에 접근하는데 차이가 있다.
1️⃣ 먼저 성적을 변수에 저장해보자.
let a = 87;
let b = 70;
let c = 100;
let average = (a+b+c) /3
2️⃣ 이번엔 배열에 저장해보자.
let arr = [ 87, 70, 100]
let averate = 0;
for(let i = 0; i < arr.length; i++) {
average += arr[i]
}
average /= arr.lengtth;
데이터를 변수에 저장하는지 배열에 저장하는지에 따라 처리방법이 다르다.
즉 자료구조에 따라서 처리방법이 다른 것을 알 수 있다. 변수와 배열이 저장된 모양과 사용밥법이 다르기 때문이다.
1️⃣ 변수
let a = 87;
let b = 70;
let c = 100;
let d = 55; //데이터 하나를 더 추가해준다.
let average = (a+b+c+d) /3 //평균을 구하는 코드를 수정한다.
2️⃣ 배열
let arr = [ 87, 70, 100, 55] // 데이터만 추가해주면 된다.
let averate = 0;
for(let i = 0; i < arr.length; i++) {
average += arr[i]
}
average /= arr.lengtth;
보다시피 배열이 훨씬 더 간단하다.
이렇게 4개의 데이터의 평균이 구해진다.
유지보수를 생각한다면 배열로 이루어진 코드가 더 좋다. 즉 자료구조에 따라 처리방법이 달라질 뿐만 아니라 코드가 더 단순해질 수 있다.
어떤 문제를 해결하기 위한 확실한 방법을 말한다.
알고리즘을 통해서 해결한다.
위의 평균을 구하는 문제를 보면
변수의 경우, 세 변수가 주어졌을 때 세 변수를 모두 더하고 3을 나누는 방법이 있고,
배열은 배열의 모든 숫자를 더하고 원소의 개수만큼 나누면 된다.
데이터가 어떤 자료구조를 하고 있는지에 따라 평균을 구하는 방식은 다르다 즉 자료구조에 따라 알고리즘이 다르다.
이처럼 알고리즘은 자료구조에 많은 영향을 받는다.
nope !
let arr = [70, 80, 100]
1️⃣ 배열의 모든 숫자를 더하고 배열의 개수만큼 나눈다.
하지만 이 방법만 있는 것이 아니다.
2️⃣ 배열의 첫 번째 원소, 두 번째 원소, 세 번째 원소를 더하고 3을 나눌 수도 있다.
배열이라는 한 가지 자료구조에 대해서도 알고리즘은 여러 가지가 있다. 둘 중 더 좋은 것을 골라 사용하면 된다.데이터가 더 늘어나는 것을 생각하면 1️⃣번이 더 효율적이다.
이처럼 알고리즘은 자료구조에 따라서 많이 달라지기도 하고 같은 자료구조에 대해서도 알고리즘은 여러 가지가 있을 수 있다.
그래서 프로그램을 작성할 때 먼저 자료구조를 선택해 데이터를 어떻게 저장하고 사용할지 결정하고 이에 맞는 알고리즘을 통해 데이터를 가공하고 원하는 결과를 얻는 과정을 거치게 된다. 즉 상황에 맞는 적절한 자료구조를 택하고 이에 맞는 적절한 알고리즘을 적용할 수 있어야 한다.