자료구조 자료구조에 대한 기초 지식이 거의 없으시다면, 이 링크에서 학습하시는 것을 추천드립니다. Array vs LinkedList 둘 다 컴퓨터 메모리 상에 나란히 저장되어 있는 자료구조 이지만, Array의 크기는 정적, LinkedList의 크기는 동적입니다. 즉, Array는 한 번 배열 크기를 정했으면 배열을 다시 재정의하지 않는 한 크기가 바뀌지 않는다는 것이고, ArrayList는 처음 선언 시 일정 크기를 잡아주기는 하지만, 그 크기를 초과한다고 한들 재정의할 필요 없이 노드의 개수를 늘려 연결해주면 됩니다. 또한, Array는 특정 인덱스에 접근. 즉, 조회시 O(1)의 시간 복잡도를 가지며, 삽입과 삭제 후 값을 앞으로 한 칸씩 당겨오기 위해서는 O(N)의 시간이 걸립니다. Array..
개요 안녕하세요, Readder입니다. 이번에는 비선형 자료구조에 대해서 배워보겠습니다. 자료구조를 처음 접하시는 많은 분들이 선형 자료구조까지는 힘들었지만 놓지 않고 잘 따라오시다가, 비선형 자료구조를 배우기 시작할 때 놔버리시는 경우가 많다고 들었습니다. 맨 처음 비선형 자료구조를 접할 때는 이전과는 다른 저장 방식에 당황스러우실 수 있어서, 저 나름 이런 패턴을 통해 접근하는 게 좋다고 생각합니다. 1. 코드로 어떻게 구현될지에 대한 생각을 완전히 배제하고 저장 방식만 이해한다. 2. 코드를 제외하고 저장 방식에 대해서 아무 도움 없이 혼자서 그려본다. 3. 코드로 어떻게 구현될지를 생각하며 글을 처음부터 다시 본다. 4. 직접 구현할 수 있다면 좋겠지만, 그렇지 못할 경우 코드를 보고 따라하며 구..
개요 안녕하세요, Readder입니다. 지난번에 자료구조를 큰 틀에서 나누어 어떤 종류가 있다는 것을 설명드렸습니다. 일렬로 나란히 저장되는 자료구조를 선형 자료구조, 그렇지 않고 데이터가 여러 갈래로 뻗어 나가는 것이 비선형 자료구조라고 말씀드렸습니다. 오늘은 그중에서도 대표적인 선형 자료구조들에 대해서 소개드리고자 합니다. 지난 챕터에서 말씀드렸다시피, 각 자료구조들이 어떤 방식으로 저장하는지, 활용도는 어디에 쓰이고 시간 복잡도는 얼마인지 구분하는 데에 초점을 맞추세요. 또, 한 번에 이해가 안 가고, 직접 구현하실 때 막상 구현하려니 감이 안 잡히실 수 있어요. 원래 자료구조와 이후에 학습하실 알고리즘은 한 번에 이해하기 쉽지 않기 때문에 너무 한 번에 모든 것을 이해하시려고 하기보다는 며칠에 나..
개요 안녕하세요, Readder입니다. 이전에 말씀드렸듯이, 자료구조는 간단히 말해서 데이터를 저장하는 공간이에요. 현실 세계로 예로 들자면 책을 보관하는 도서관, 옷들을 보관하는 옷장처럼 프로그래밍에서 어떤 데이터를 저장하기 위한 공간으로 자료구조라고 하는 거죠. 다만, 우리는 프로그래머로서 데이터들을 대충대충 저장하는 것이 아니라, 올바른 용도에 좋은 효율로 저장해야죠. 그리고 이미 똑똑한 선배 프로그래머, 관련 학자 분들이 정립한 자료구조가 있고, 일반적으로 이 목록들을 자료구조라고 합니다. 그러니까, 자료구조는 정의상으로는 데이터를 저장하는 공간이지만, 실제 사람들이 자료구조를 아느냐고 물을 때는 학자와 프로그래머들이 대표적으로 정의한 자료구조들에 대해 아느냐고 묻는 거죠. 자료구조의 종류와 특징..
안녕하세요, Readder입니다. 이전에는 자료구조란 어떤 것이고, 왜 자료구조라는 것이 필요하고, 왜 우리가 알아야 하는지에 대해 간단하게 정리해 보았습니다. 이번에는 자료구조 기초. 즉, 자료구조를 이해하기 위해 반드시 알아야 할 사항들에 대해서 정리해 보고, 다음 챕터부터는 자료구조에 대해 실질적으로 학습을 진행해보고자 합니다. 자료 구조의 예시와 그 자료구조를 하나 하나 뜯어보기 전에, 제가 생각하기에는 다음과 같은 지식이 필요합니다. 1. 하나의 언어에 대한 전반적인 지식 2. 빅오 표기법과 복잡도 이에 대해 하나씩 설명해보도록 하겠습니다 1. 하나의 언어에 대한 전반적인 지식 첫 언어를 어떤 것으로 시작하셨든 상관 없습니다. C, C++, Java, Python 등 많은 프로그래밍 언어가 있고..
자료구조 학습의 시작 안녕하세요. 보통 프로그래밍 언어를 1~2개 익히시고, 조금 다뤄본 뒤에 '다음엔 뭐 공부해야 하지?'라고 하면 나오는 게 아마 대부분 자료구조 및 알고리즘일 것입니다. 자료구조 및 알고리즘은 괜찮은 기업들의 코딩 테스트를 위해서 필수적으로 익히셔야 할 내용입니다. 굳이 취업이 아니더라도, 프로그래머를 평생 직업으로 삼고자 한다면, 언젠가 반드시 알아야 할 사항이니 이번 기회에 꼭 익히시길 바랍니다. 사람에 따라 다르긴 하겠지만, 저 같은 경우에는 프로그래밍 언어를 익히고 충분히 활용해보지 않았는데 자료구조 및 알고리즘을 배울 때 조금 어렵긴 했으나, 그나마 정리된 개념들을 쉽게 다루고자 노력하려고 합니다. 참고로, 이 글에서는 자료구조의 깊은 부분은 제외하고 필수적으로 알아야 할 ..