안녕하세요. Readerr입니다. 자료구조, 알고리즘 등 많은 부분에서 반드시 알아야 할 것이, "그래서 시간 복잡도는 얼마인가?"입니다. 면접에서 어떤 자료구조의 시간 복잡도는 어떻게 되는지 물어보는 경우도 많고, 알고리즘 문제를 풀 때도 특정 시간 복잡도 내에 풀어야 하는 경우가 많죠. 그렇다면 이 '시간 복잡도'가 무엇이냐. 말 그대로 "특정 작업을 하는데에 얼마만큼 시간이 걸리느냐"입니다. 그러나 일반적으로 '몇 회의 작업을 하느냐'라는 의미로 보는 것이 더 쉽겠네요. 빅오 표기법 시간 복잡도에 사용되는 대표적인 개념은 바로 빅오(Big-O) 표기법이에요. 어렵게 생각하실 거 없이, 변수들 중 최고차항만 계산하겠다는 겁니다. 예를 들어 'x² * 2x * 3'이라는 계산식이 있다고 가정했을 때, ..
자료구조 학습의 시작 안녕하세요. 보통 프로그래밍 언어를 1~2개 익히시고, 조금 다뤄본 뒤에 '다음엔 뭐 공부해야 하지?'라고 하면 나오는 게 아마 대부분 자료구조 및 알고리즘일 것입니다. 자료구조 및 알고리즘은 괜찮은 기업들의 코딩 테스트를 위해서 필수적으로 익히셔야 할 내용입니다. 굳이 취업이 아니더라도, 프로그래머를 평생 직업으로 삼고자 한다면, 언젠가 반드시 알아야 할 사항이니 이번 기회에 꼭 익히시길 바랍니다. 사람에 따라 다르긴 하겠지만, 저 같은 경우에는 프로그래밍 언어를 익히고 충분히 활용해보지 않았는데 자료구조 및 알고리즘을 배울 때 조금 어렵긴 했으나, 그나마 정리된 개념들을 쉽게 다루고자 노력하려고 합니다. 참고로, 이 글에서는 자료구조의 깊은 부분은 제외하고 필수적으로 알아야 할 ..
소개 Tree는 비선형 자료구조 중 하나입니다. 비선형이라는 것은 말 그대로 일직선으로 나타내지 못하는 방식이며, 그중 트리는 계층적 구조를 띄고 있습니다. 계층적 구조라 함은, 일반적으로 조직도를 나타내는 경우 자주 사용되죠. 트리도 그와 비슷합니다. 자료구조를 학습할 때, 사람들이 가장 많이 포기하시는 경우가 선형 자료구조를 어렵게 어렵게 배우고, 비선형 자료구조로 넘어갈 때라는 것 아시나요? (윤성우의 열혈 자료구조 내용) 일반적으로 저희는 나란히 자료가 저장되고, 삭제되는 메커니즘에 익숙합니다. 그런데 갑자기 익숙하지 않게 계층적으로 자료를 저장하고 삭제하려니 난이도가 급증했음을 느끼게 되고, 곧 포기하게 되는 거죠. 부족하지만, 이 게시글이 조금이라도 도움이 되시길 바랍니다... 구조 아까 말씀..
Stack/Queue Stack과 Queue는 통상적으로 List 자료구조를 배운 이후에 학습을 진행하기 때문에, 자료구조라는 말 뜻을 아실 거라고 생각합니다. 두 자료구조 역시 선형 자료구조 중 하나인데, 스택과 큐는 오직 한 방향에서의 데이터의 삽입과 삭제를 진행하는 자료구조입니다. 두 자료구조를 가장 잘 나타낼 수 있는 말이 있죠. Stack : 후입선출(後入先出) Queue : 선입선출(先入先出) 말 그대로, 스택은 가장 마지막에 삽입한 데이터가 가장 먼저 추출되고, 큐는 가장 먼저 들어온 데이터가 가장 먼저 추출되는 형식입니다. 실생활을 예로 들자면, 후입 선출 알고리즘은 실행 취소(Ctrl+z, undo)로 예를 들 수 있고, 선입선출은 일반적으로 음식점에서 채소 및 재료를 꺼낼 때 먼저 들어..
자료구조 List는 자료구조의 일종으로, 자료구조란 자료의 집합을 의미하며, 더 나아가 저장, 삭제, 조회 등을 할 수 있도록 표현한 것이다. 자료구조는 선형 자료구조와 비선형 자료구조로 나뉘게 되는데, 그중 List는 선형 자료구조이다. 전체 자료구조 리스트는 다음과 같다. List List는 대표적인 자료구조 중 하나이며, 이후 학습할 내용인 Tree, Graph 등 다른 자료구조에 비해 통상적으로 난이도가 쉽다고 할 수 있다. 배열과 비슷한 구조를 띄고 있지만, 배열의 치명적인 단점인 크기가 고정적이라는 점을 해결할 수 있는 방법이다. 시간 복잡도 - 조회 O(n) - 삽입, 삭제(가장 앞, 뒤) O(1) 시간 복잡도에서 나타내는 것과 같이, 조회는 느리지만, 단순히 맨 앞 또는 뒤에 값을 추가하고..