티스토리 뷰

이번 포스팅에서는 자료구조와 알고리즘의 특징을 알아보기 전에 왜 배워야 하는가 ?

많은 기업들은 왜 자료구조와 알고리즘 해결능력을 보려고 하는가 ?

에 대해서 포스팅 해보면서 우리가 배워야 하는 이유에 대해 개인적인 생각을 말해보도록 하겠습니다.


유튜브 "알고리즘" 이 날 여기로 인도했다. ( 해적왕?... ) 

 

 

요즘 알고리즘이라는 단어는 많이들 알고 계실거라고 생각한다.

사실 내가 학교를 다닐때만 해도 알고리즘이란 단어는 그저 학과수업의 제목일 뿐이였는데... ( 이건 나만 해당 )

이제는 알고리즘이란 단어가 많이 친숙해졌으며, 특히 컴퓨터 안에서 알고리즘에 대해서 개발자가 아닌 사람들도 어느 정도의 이해를 하고 있다.

 

근데 자료구조라는 단어는 익숙하지 않을 거라고 생각한다.

특히 자료구조의 경우는 왜 ? 공부하는가에 대한 의문이 상당히 든다.

책을 펼쳐보면 시작부터 머리가 아플 지경이다.

수포자들에게는 비극적이게도 log(로그)를 탈출했나 싶었는데 다시 등장하고, 알수없는 코드들의 등장에 타이핑을 쳐보지만 그저 실행 안되는 코드일뿐..이라는 생각이 들수도 있다.

난 수포자는 아니지만(수학 잘했씀) 실제로 내가 이랬다.

 

하지만 겁먹지 마라. 사실 자료구조라는 것은 수학이란 학문과는 전~~혀 관계가 없는건 아니지만..ㅋㅋㅋㅋㅋ

높은 수리능력보다는 간단한 공식을 이용한 활용능력이 더 중요한 부분이다...라고 위로.

(사실 논리적인 사고영역이긴 하다. 그렇지만 연습으로 충분히 가능함!!!)

즉 미분을 사용해 어려운 수학문제를 푸는게 아니라 간단한 미분공식만으로 쉬운 문제를 빨리 풀 수 있는 능력을 기르는것?... 이라고 생각하고 접근해보자 !  어차피 미분은 어렵잖아..

 

 

자료구조와 알고리즘을 왜 알아야 하는가?

시작에 앞서 자료구조와 알고리즘을 왜 배워야 하는지부터 말하도록 하겠다.

사실 필자가 자료구조/알고리즘을 왜 배우는지 처음에는 배우면서 도통 이해가 가질 않았다. 

하지만 점차 개발을 하는 과정에서 자연스럽게 사용했던 부분들이 모두 자료구조이며 알고리즘이라는 것을 알게되었고, 점차적으로 이해가 가길 시작했다.

프로그램 = 자료구조 + 알고리즘

기본적으로 우리가 개발하는 모든 프로그램은 자료구조와 알고리즘의 합이다.

?????

프로그래밍은 자바나 C 로 만드는건데요 ?

틀린말은 아니다.

하지만 이런 프로그래밍 언어를 사용해 각각의 연산과 처리를 하는 과정 자체가 자료구조이며,알고리즘이다.

 

1차적으로 이해가 되었다면 다행이지만, 2차적으로 이런거 몰라도 충분히 개발이 가능한데 ?

이 부분에 대한 대답은 일부 사람에게는 맞을수도 일부사람에게는 틀릴 수도 있다.

자료구조와 알고리즘은 극 초반 설계단계를 지나고 나면 사용되지 않을 수도 있고, 특히 어려운 알고리즘이나 자료구조는 자주 사용되지 않는다.

그럼에도 불구하고 많은 IT 대기업에서는 어려운 자료구조를 묻고 알고리즘을 해결하는 능력을 테스트하는데, 그 이유가 무엇일까?

 

바로 자료구조 와 알고리즘은 시대의 흐름에도 크게 변하지 않기 때문이다.

컴퓨터는 그 어떤 것보다도 빠르게 시대의 흐름을 타는 분야이다.

이에 따라 새로운 기술들이 나타나고, 사용하지 않는 기술들이 사라지면서 이에 맞게 기존 기술들도 변화해 오고 있다.

(10년전 C언어와 지금의 C언어 책만 비교해봐도 많은 부분이 달라진 것과 같다.)

하지만 자료구조와 알고리즘은 몇십년이 지난 지금도 예전과 크게 달라지지 않았다.

( - 근.본 - )

 

이러한 이유에서 자료구조와 알고리즘은 개발자의 실력을 가늠하는 척도로도 이용되는 것이다.

( 개발자의 실력을 자료구조와 알고리즘으로 파악한다는 것이 전부라는 뜻은 아니다. )

다만 가장 기초적으로 광범위하게 가늠하기 좋다는 의미라고 생각한다.

 

너무 현실적으로만 말한듯하지만, 

진짜 자료구조와 알고리즘을 알아야 하는 이유에 대해서 말해보도록 하겠다.

 

자료구조메모리를 어떻게 효율적으로 사용하며, 실행속도를 빠르고, 정확하게 처리할 수 있을까 를 궁극적인 목표로 두고 있다.
알고리즘은 이러한 자료구조의 목표를 바탕으로 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현하는 것이다.

 

우리가 프로그램을 사용하는데 정확성이 떨어진다거나, 실행속도가 현저히 느리다면 더 정확하고 빠른 프로그램을 찾게 되는 것처럼 효율성이 높은 프로그램을 개발하기 위해 필요한 과정에서 일련의 방법을 제시해주는 가이드 역할을 하는 것이다.

 

자료구조와 알고리즘을 포스팅하기에 앞서서 개인적인 자료구조/알고리즘을 배워야 하는 이유에 대해서 포스팅해보았는데, 이 두개는 프로그래밍의 근본이라고 말하고 싶다.

우리가 초등학교를 다니면서 덧셈 뺄셈을 기본적으로 배우고 새로운 부분이 생기는 일없이 자주 사용하는 것처럼

(물론 덧셈,뺄셈을 이용해 점점 미분까지 과는 과정이지만)

자료구조와 알고리즘도 한번 배워만 두면 근본이 변하지 않고 꾸준하게 질문될 수 있기 때문에 한번만 잘 이해하는 것에 중점을 두도록 하자.

 

 


 

-살짝 이야기가 산으로 간 포스팅-

 

 

 

 

 

 

 

댓글
공지사항
글 보관함
최근에 올라온 글
최근에 달린 댓글