코딩테스트 문제를 Lv.1부터 풀다가 드디어 한계가 왔다 ㅎ (Lv.3 가기 너무 어려워 😂)
자료구조와 알고리즘의 공부가 10000000% 필요한 순간이 왔.......다..
겸사겸사 CS 공부도 제대로 공부하고 싶어, 인프런 워밍업 클럽 3기 CS 스터디에 참가했다.
앞으로 잘해보자~ 찌니월드 !
데이터가 어떤 구조로 저장되고 어떻게 사용되는지를 나타낸다.
글로만 봐서는 어렵게 느껴질 수 있지만, 우리는 이미 프로그래밍을 하면서 자료구조를 사용해왔다.
가장 단순한 자료구조는 변수
이다.
숫자나 문자열을 저장하기 위해서 변수를 사용한다.
그리고 저장한 숫자나 문자열에 접근하고 싶다면 변수를 참조한다.
다른 자료구조는 배열
이다.
배열은 숫자나 문자열 등을 연속적으로 저장하는 자료구조이다.
그리고 해당 숫자나 문자열에 접근하고 싶다면 인덱스로 접근하여 해당 데이터를 참조하면 된다.
다음 예시를 통해 자세히 살펴보자.
1️⃣ 먼저 성적을 변수에 저장해보자.
let a = 87;
let b = 70;
let c = 100;
let average = (a + b + c) / 3;
2️⃣ 이번엔 성적을 배열에 저장해보자.
let arr = [87, 70, 100];
let average = 0;
for (let i = 0; i < arr.length; i++) {
average += arr[i];
}
average /= arr.length;
이처럼 데이터를 변수에 저장하는지, 배열에 저장하는지에 따라 처리 방법이 달라진다.
즉, 자료구조에 따라 데이터를 처리하는 방법이 달라진다.
변수와 배열이 저장된 모양도 다르고 사용 방법도 다르기 때문이다.
어떤 문제를 해결하기 위한 확실한 방법을 말한다.
앞서 살펴본 예시처럼, 평균을 구하는 문제에서 데이터가 어떤 자료구조로 저장되어 있는지에 따라 평균을 구하는 방식은 조금 달랐다.
즉, 자료구조에 따라서 알고리즘이 달라졌다. 알고리즘은 자료구조에 많은 영향을 받는다.
여기서 잠깐 ✋!
특정한 자료구조에 대해서 문제를 푸는 알고리즘은 하나만 존재할까?
그것은 NO!
let arr = [87, 70, 100];
1️⃣ 배열의 모든 숫자를 더하고 원소의 개수만큼 나눈다.
하지만 이 방법만 있는 것은 아니다.
2️⃣ 배열의 첫 번째 원소와 두 번째 원소, 세 번째 원소를 더하고 3을 나눈다.
이처럼 배열이라는 한 가지 자료구조에 대해서도 알고리즘은 여러 가지가 있을 수 있다. 둘 중 더 좋은 알고리즘을 골라 사용하면 된다.
그동안 무작정 문제만 풀었던 것 같다. 앞으로 코딩테스트 문제를 풀 때는 문제 상황에 맞는 적절한 자료구조를 먼저 생각한 다음, 이에 맞는 적절한 알고리즘을 생각하고 선택하는 과정을 많이 연습해야 겠다.
화이팅 ><!