Groo
자료구조와 알고리즘에 대해서 본문
안녕하세요, 오늘은 오랜만에 새로운 주제에 대해서 글을 작성하려고 합니다.
오늘 작성하는 글의 주제는 자료구조와 알고리즘이며 개념과 기초에 대해서 먼저 소개하려고 합니다.
🤷♂️ 자료구조와 알고리즘을 배우는 이유는?
2019년 2학기 학교 전공과목인 C언어 자료구조와 알고리즘 수업을 통해 처음으로 자료구조와 알고리즘에 대해서 알게 되었습니다. 그 당시 담당 선생님께서는 저희에게 앞으로 개발자라는 직업과 소프트웨어 관련 기업에 취업을 하기 위해서는 자료구조와 알고리즘 공부는 정말 중요하며 꾸준히 문제를 풀어보고 계속 공부를 해야지만 실력이 늘어날 것이라고 매번 말씀을 하셨습니다.
📃 코딩 테스트의 핵심 자료구조와 알고리즘!
대부분의 소프트웨어 관련 기업들은 새로운 인재를 채용할 때 그 사람의 실력을 확인하기 위해 1차 서류 전형을 마친 후 대부분 온/오프라인 형식으로 코딩 테스트를 시행하고 있습니다. 코딩 테스트의 대부분 문제들은 자료구조와 알고리즘을 사용하면서 코드를 더욱 효율적으로 작성하여 코드의 효율성이 뛰어난지를 판단하며 심사위원들이 그 사람의 실력을 판단하는 기준이라고도 말할 수 있습니다. 그러한 만큼 코딩 테스트를 수행하기 위해 자료구조와 알고리즘을 공부하는 것은 정말 중요하다고 생각을 합니다.
📚 자료구조와 알고리즘 공부 방식은?
저는 이번 겨울 방학 동안 꾸준히 개인적으로 관련 책을 구매하여 공부를 하고 있었습니다. 책의 커리큘럼에 따라 천천히 개념들을 공부하며 책 안에 포함되어 있는 예제들을 따라 해 보면서 각각의 자료구조에 대해서 이해를 하였습니다. 이제는 어느 정도 이해를 하여 이전의 Kotlin 코틀린 언어와 같이 자료구조와 알고리즘을 공부한 내용들을 블로그에 꾸준히 포스팅할 예정입니다.
🤔 자료구조와 알고리즘의 차이는?
지금까지 저는 자료구조와 알고리즘을 함께 불렀습니다. 그러나 자료구조와 알고리즘은 서로 다른 의미를 가지고 있습니다. 저는 인터넷에 자료구조와 알고리즘의 차이점을 알아보기 위해 검색을 하던 중 자료구조와 알고리즘의 차이를 간단하게 설명을 해주는 좋은 예시의 글을 보게 되었습니다. 여러분에게도 함께 이 예시를 통해서 설명을 하면 좋겠다고 느껴 간단한 예시를 준비하였습니다.
자료구조의 사전적 의미
데이터 단위와 데이터 자체 사이의 물리적 또는 논리적인 관계
알고리즘의 사전적 의미
문제를 해결하기 위한 것으로, 명확하게 정의되고 순서가 있는 유한 개의 규칙으로 이루어진 집합
자료구조를 도서관의 책장에 책을 꼽는 것으로 가정을 할 수 있다면 도서관에 존재하는 많은 책장은 모두 규칙적으로 책이 진열이 되어있습니다. 그 규칙은 도서관마다 다르며 다양한 방법이 존재합니다. 예를 들어 ABC 알파벳 순서, 연도 순서, 책을 세로로 또는 가로로 진열을 합니다. 이렇게 데이터가 저장되는 형태 즉 데이터 표현 및 저장 방식을 자료구조라고 의미할 수 있습니다.
반면에 알고리즘은 앞에 예시를 들었던 도서관에 책이 순서되로 모두 진열이 되었다면 그 책을 찾는 것에 비교할 수 있습니다. 자신이 원하는 책을 찾을 때 책장의 왼쪽, 오른쪽, 위쪽, 아래쪽으로 책을 찾을 수 있으며 큰 책, 작은 책으로도 검색이 가능하며 심지어 무작위로도 책을 찾을 수 있습니다. 이러한 것과 같이 저장된 데이터를 명령 처리 및 제어 방법을 알고리즘이라고 의미할 수 있습니다.
👍 글을 마치며
오늘은 오랜만에 블로그에 글을 작성하였습니다. 그 동안 자료구조와 알고리즘이라는 주제에 대해서 블로그에 글을 포스팅하기 위해 계속 꾸준히 공부를 한다고 글을 적지 못하였습니다. 앞으로 꾸준히 제가 그동안 공부한 내용들 중 중요한 내용과 기록을 해야 하는 내용들을 잘 정리해서 글을 적어보도록 하겠습니다. 자료구조와 알고리즘의 내용은 파고들어갈수록 내용이 더욱 심화되고 어렵습니다. 그러나 앞으로 미래의 It 세계에서 살아남기 위해서는 필수적으로 공부하고 준비해야 하는 과목 중 한 개라고 저는 생각을 합니다.
참고 : Do it 자료구조와 함께 배우는 알고리즘 입문 자바 편
'프로그래밍 기초 > Data structure & Algorithm' 카테고리의 다른 글
재귀에 대해서 (0) | 2020.03.05 |
---|---|
큐에 대해서 (2) | 2020.02.13 |
스택에 대해서 (0) | 2020.02.12 |
이진 검색과 시간 복잡도에 대해서 (0) | 2020.02.12 |
선형 검색과 보초법에 대해서 (0) | 2020.02.11 |