본문 바로가기
프로그래밍/자료구조 & 알고리즘

2021년 7월 30일 - 알고리즘을 공부해야하는 이유

by 철제백조 2021. 7. 30.

☆ 알고리즘을 공부해야하는 이유?

대기업에 면접을 보고 들어가고 싶은 경우

이 경우 목적은 데이터 구조와 알고리즘을 그저 암기하는 것이 아닌, 제대로 이해하는데 있다.

입사 후, 이런 것들을 업무에 즉각 응용하기 위함이다.

 

➁ 혼자 코딩을 하더라도 자신의 코드를 최적화하는 법을 배울 수 있다

코딩을 처음 배울 때, 데이터 구조와 알고리즘을 배울 필요는 없다.

초심자들은 일단 코드가 굴러가게 만드는 것이 중요하다.

 


 

☆ 언제 알고리즘과 자료구조가 필요할까?

코딩은 전부 마무리했고, 배포도 끝났으며, 소스코드에 버그는 상태다.

그러나 여전히 어플리케이션이 느릴 때이다.

모든 프로그래밍을 제대로 했음에도 불구하고, 어디 코드를 최적화해 어플리케이션을 빠르게 만들지 모를 경우가 바로 알고리즘을 공부해야 할 때이다.

이것이 만든 어플리케이션의 속도를 획기적으로 개선해줄 것이다.

 


 

☆ 코딩 프로세스의 성장의 단계

처음 코딩할 때는 단순히 작동하는 코딩을 하는데 집중한다.

그 단계를 지나면 코드의 퀄리티에 대해 신경쓴다.

얼마나 코드가 아름다운지, 코드를 관리하기 편하고, 다른 사람들과 일하기 편하게 다듬는다.

어떻게 코드를 빠르고 효율적으로 만드는지를 신경쓴다.

 


 

☆ Algorithm이란?

"알고리즘"은 여러개의 지시사항이다.

어떠한 액션을 수행하기 위해 컴퓨터가 수행해야하는 것들이다.

훌륭하고 효율적인 알고리즘을 찾으면 이걸 상황에 따라 적절히 반복적으로 사용할 수 있다.

우리 생활에 일상적으로 녹아있는 특정한 패턴들처럼 목적을 달성해보기 위한 여러개의 행동들이다.

이를 통해 동일한 결과를 산출한다.

컴퓨터 알고리즘의 대표적 예시는 "지도"가 존재한다.

지도는 출발지부터 목적지까지 최단 거리를 찾는데, 이것을 "Path Finder Algorithm"이라고 한다.

이외에도 압축(Compression) 알고리즘이 존재하는데, 이는 이미지의 퀄리티 손상없이 어떻게 압축하는 지를 나타내는 방법이다.

이외에도 "암호화(Encryption) 알고리즘" 등이 존재한다.

 


 

☆ Data Struture란?

https://ehrn35.tistory.com/2

"Data"란 요즘 세상의 "기름" 정도로 비유할 수 있을 것이다.

많은 기업과 서비스에서 사용자들의 데이터를 필요로 하고, 이를 통해 AI를 학습시킨다.

프로젝트의 크기와 상관없이 개발자는 늘 데이터를 다루게 된다.

프론트엔드 개발자라면, 백엔드의 json 데이터를 가지고 이를 인터페이스를 통해 보기좋게 포장하는 일이라 할 수 있다.

백엔드 개발자라면, 데이터베이스를 다루며 DB의 검색, 편집, 수정, 추가 등등을 다루면서 이를 프론트로 보낸다.

이 두 경우 모두 키워드는 "데이터"이다.

데이터 구조란 이 데이터들을 정리하는 일종의 방식이다.

 데이터를 어떻게 정리하느냐에 따라서 우리의 작업처리 속도에 영향을 준다.

어떤 데이터 구조를 사용하느냐에 따라 서비스 속도가 달라지게 된다.

데이터 구조는 다양한데, 특정 구조는 작은 것부터 큰 것으로 데이터를 "정렬"하는데 최적화 되어있기도 하고, 어떤 구조는 "검색"하는데 최적화 되어있고, 혹은 "추가", "편집" 등에 특화되어 있다.

 

따라서 어떠한 작업에 어떠한 데이터 구조를 '언제' '어떻게' 쓰는지 아는 것이 해당 어플리케이션의 스피드를 결정하게 된다.

배열(Array)을 쓰는 대신에

 

 언제 "Linked lists"를 써야하는지 등

따라서 각각의 데이터 구조에 대한 이해도가 있어야 한다.

주로 4가지 Operation 상황에 맞춰 이해도가 필요하다.

  • Search
  • Read
  • Insert
  • Delete

이 4가지 상황을 염두하고, 데이터 구조를 바라보면 어떠한 상황에 어떤 데이터 구조를 써야할지 알 수 있다.

언제 "읽기"가 필요한지, "검색"이 필요한지 등 어떤 데이터 구조를 선택하느냐에 따라서 갈리게 된다.

Array 역시 데이터 구조 중 하나로, 가장 베이직한 타입이기도 하다.

 

 

● 본 공부와 기록은 유튜버 'Nomad Coders' 님의 "개발자라면 "무조건" 알고리즘 공부를 해야할까?"을 참고하였다.

댓글