2. 알고리즘의 효율성 및 기초 자료구조
- 알고리즘/Algorithm(학습)
- · 2022. 11. 4.
알고리즘 지식이 왜 필요한가? 바로 논리적인 사고력을 기르기 위해서입니다. 누군가는 알고리즘을 실무에 가서 전혀 도움이 되지 않는 지식이라고 말하기도 합니다. 사실 그 말들이 아예 틀린건 아닐 수 있어요. 알고리즘에서 배우는 여러 기법들이 실제 실무에 가서 쓰이는건 절대 보편적이지는 않긴 해요. 들어간 회사의 주요 서비스에 따라, 들어간 회사가 소위 말해 얼마나 좋은 회사이냐에 따라 알고리즘 기법을 몇년간 아예 쓰지 않을 수 있긴 해요. 그럼에도 불구하고 많은 기업에서 알고리즘을 중요하게 생각하는 이유가 바로 앞서 말씀드렸던 논리적인 사고력이에요. 알고리즘은 배우다 보면 천재이거나 이미 아는 문제가 아닌 이상 문제를 해결하는 방법에 가장 큰 시간을 투자해야 해요. 해결하는 방법을 명확하게 설정하지 못하고..
자료구조 자료구조에 대한 기초 지식이 거의 없으시다면, 이 링크에서 학습하시는 것을 추천드립니다. Array vs LinkedList 둘 다 컴퓨터 메모리 상에 나란히 저장되어 있는 자료구조 이지만, Array의 크기는 정적, LinkedList의 크기는 동적입니다. 즉, Array는 한 번 배열 크기를 정했으면 배열을 다시 재정의하지 않는 한 크기가 바뀌지 않는다는 것이고, ArrayList는 처음 선언 시 일정 크기를 잡아주기는 하지만, 그 크기를 초과한다고 한들 재정의할 필요 없이 노드의 개수를 늘려 연결해주면 됩니다. 또한, Array는 특정 인덱스에 접근. 즉, 조회시 O(1)의 시간 복잡도를 가지며, 삽입과 삭제 후 값을 앞으로 한 칸씩 당겨오기 위해서는 O(N)의 시간이 걸립니다. Array..
개요 안녕하세요, Readder입니다. 이번에는 비선형 자료구조에 대해서 배워보겠습니다. 자료구조를 처음 접하시는 많은 분들이 선형 자료구조까지는 힘들었지만 놓지 않고 잘 따라오시다가, 비선형 자료구조를 배우기 시작할 때 놔버리시는 경우가 많다고 들었습니다. 맨 처음 비선형 자료구조를 접할 때는 이전과는 다른 저장 방식에 당황스러우실 수 있어서, 저 나름 이런 패턴을 통해 접근하는 게 좋다고 생각합니다. 1. 코드로 어떻게 구현될지에 대한 생각을 완전히 배제하고 저장 방식만 이해한다. 2. 코드를 제외하고 저장 방식에 대해서 아무 도움 없이 혼자서 그려본다. 3. 코드로 어떻게 구현될지를 생각하며 글을 처음부터 다시 본다. 4. 직접 구현할 수 있다면 좋겠지만, 그렇지 못할 경우 코드를 보고 따라하며 구..
개요 안녕하세요, Readder입니다. 지난번에 자료구조를 큰 틀에서 나누어 어떤 종류가 있다는 것을 설명드렸습니다. 일렬로 나란히 저장되는 자료구조를 선형 자료구조, 그렇지 않고 데이터가 여러 갈래로 뻗어 나가는 것이 비선형 자료구조라고 말씀드렸습니다. 오늘은 그중에서도 대표적인 선형 자료구조들에 대해서 소개드리고자 합니다. 지난 챕터에서 말씀드렸다시피, 각 자료구조들이 어떤 방식으로 저장하는지, 활용도는 어디에 쓰이고 시간 복잡도는 얼마인지 구분하는 데에 초점을 맞추세요. 또, 한 번에 이해가 안 가고, 직접 구현하실 때 막상 구현하려니 감이 안 잡히실 수 있어요. 원래 자료구조와 이후에 학습하실 알고리즘은 한 번에 이해하기 쉽지 않기 때문에 너무 한 번에 모든 것을 이해하시려고 하기보다는 며칠에 나..
개요 안녕하세요, Readder입니다. 이전에 말씀드렸듯이, 자료구조는 간단히 말해서 데이터를 저장하는 공간이에요. 현실 세계로 예로 들자면 책을 보관하는 도서관, 옷들을 보관하는 옷장처럼 프로그래밍에서 어떤 데이터를 저장하기 위한 공간으로 자료구조라고 하는 거죠. 다만, 우리는 프로그래머로서 데이터들을 대충대충 저장하는 것이 아니라, 올바른 용도에 좋은 효율로 저장해야죠. 그리고 이미 똑똑한 선배 프로그래머, 관련 학자 분들이 정립한 자료구조가 있고, 일반적으로 이 목록들을 자료구조라고 합니다. 그러니까, 자료구조는 정의상으로는 데이터를 저장하는 공간이지만, 실제 사람들이 자료구조를 아느냐고 물을 때는 학자와 프로그래머들이 대표적으로 정의한 자료구조들에 대해 아느냐고 묻는 거죠. 자료구조의 종류와 특징..