자료구조 & 알고리즘 개요

keemtj·2020년 11월 6일
0
post-thumbnail

📝 개요

본 시리즈는 자료구조와 알고리즘에 관한 이론을 공부하고 정리하는 시리즈다. 개발 공부를 하면서 검색 혹은 문서 등 이것저것 익숙하게 들었던 용어들이지만 그것들에 대해서 정리해보고 자세히 공부한 적은 없었다. 이번 기회에 자료구조와 알고리즘에 대해서 자세히 공부하고 그 내용을 정리하기로 했다.

🤔 그렇다면 왜 공부해야 하지?

자료구조?

자료구조란 데이터를 효율적으로 관리할 수 있는 데이터의 구조를 의미한다. 코드상에서 효율적으로 데이터를 처리하기 위해 데이터의 특성에 따라 혹은 체계적으로 데이터를 구조화해야 한다. 어떤 데이터 구조를 사용하느냐에 따라 코드의 효율이 달라진다.

자료구조, 데이터 구조, data structure라는 3가지 용어가 혼용되어 사용된다.

현실세계의 정보를 어떻게 데이터로 변환해서 구조를 만들 수 있을까?

우편번호
우편번호의 경우 5자리(00000)의 우편번호로 국가의 기초구역을 제공하고 있다. 앞의 3자리는 시, 군, 자치구를 의미하며 뒤의 2자리는 일련번호로 구성되어있다.

학생관리부
학생관리의 경우 학년, 반, 번호를 학생에게 부여해서 학생부를 관리한다. xx학년 xx반 xx번 학생 은 일종의 구조를 나타낸다.

사전
알파벳의 순서에 따라 정렬해놓은 대표적인 자료구조이다.

프로그래밍에서 대표적인 자료구조는 배열(Array), 스택(Stack)/큐(Queue), 링크드 리스트(Linked List), 해시 테이블(Hash Table), 힙(Heap) 등이 있다.

자료구조는 알고리즘(알고리즘의 풀이)에서도 많이 사용된다. 그리고 실제 현업에 가서 프로그래밍을 할 때 대표적인 자료구조 정도는 알고 있어야 개발한 결과물에 대해서 어느정도의 성능을 담보로 하는 프로그래밍을 할 수 있기 때문이다.

알고리즘?

어떠한 문제를 풀기 위한 절차 혹은 방법을 말한다. 어떤 문제에 대해서 특정한 '입력'을 넣으면 기대하는 '출력'을 얻을 수 있도록 만드는 프로그래밍이다.

현실세계의 대표적인 알고리즘은 무엇이 있을까?

백종원 레시피(recipe)
레시피의 경우 어떠한 음식을 만들기 위해 필요한 절차와 방법을 갖고 있다. 식재료와 요리 순서(입력과 과정)에 따라 원하는 음식(출력)이 만들어진다.

알고리즘은 어떤 문제를 풀이 위한 절차와 방법을 말한다. 사람마다 문제를 해결하는 방법은 각양각색이지만 어떤 알고리즘이 좋은지 판단하는 것이 중요하다.

(어느정도의 시간이 쓰이느냐, 얼마 만큼의 저장공간을 필요로 하느냐가 핵심!)

언어는?

어떤 언어로든 자료구조와 알고리즘을 익힐 수 있다. 과거에는 C 혹은 C++로만 작성되었으나, 최근에는 언어로 인한 제약이나 평가는 없어졌다.
(C#, C++, Java, Go, Python, Kotlin, Ruby, Swift, Javascript 등)

즉, Javascript로 공부해도 충분하다!

🧑🏻‍💻 결론

현 시대는 빅데이터 시대이므로 수천, 수백만 혹은 그 이상의 데이터를 가지고 프로그램이 동작하게 된다. 이 때, 어떤 자료구조와 알고리즘을 쓰느냐에 따라 프로그램의 성능에 있어서 차이가 발생할 수 있다. 결론적으로 자료구조와 알고리즘에 대한 학습은 성능이 좋은 프로그래밍을 위한 것이다.

📝 참고

본 시리즈는 패스트캠퍼스의 자료구조와 알고리즘 강의(알고리즘 / 기술면접 완전 정복 올인원 패키지 Online)을 듣고 공부하고 정리한 글입니다. 이 후 게시글의 출처에 대해서는 패스트캠퍼스는 따로 언급하지 않고 새롭게 가져온 글에 대해서만 출처를 남기겠습니다.🙋🏻

0개의 댓글