알고리즘/자료구조

    [자료구조] 그래프(Graph)란

    [자료구조] 그래프(Graph)란

    안녕하세요! 오늘은 비선형 자료 구조인 그래프에 대해서 공부해보겠습니다. 탐색 알고리즘을 공부해보셨다면 아마 익숙하실거에요. BFS, DFS 정도는 알고리즘 문제로 흔히 나오는 편이니 이 참에 그래프를 공부하는 건 어떨까요? 그래프란 그래프는 비선형 자료 구조로 1) 데이터들 간의 2) 관계를 표현한 자료 구조입니다. 여기서 말한 데이터=노드, 관계=엣지 가 됩니다. 다시 말해 그래프는 노드와 엣지로 이루어졌다고 보시면 됩니다. 한번 그림으로 예시를 들어볼까요? 유비, 관우, 장비 노드 3개가 있고, 각각의 노드가 다른 노드들과 연결되어 있는 그래프입니다. 그래프는 데이터 간의 관계를 표현하는 자료 구조라고 했는데 이 그래프에서는 어떤 관계가 보이시나요? 정답은 의형제 관계입니다! 유비는 관우, 장비와 ..

    [자료 구조] 해시맵(HashMap)이란

    [자료 구조] 해시맵(HashMap)이란

    안녕하세요! 오늘은 비선형 자료 구조인 해시맵에 대해서 공부해보겠습니다. 파이썬을 주로 사용하셨다면 dict, golang을 주로 사용하셨다면 map, 자바를 주료 사용하셨다면 HashTable로 익숙하실거에요! 간단한 알고리즘 문제들은 해시맵을 사용하는 것만으로도 해결할 수 있는 경우가 많으니 이 참에 공부해봐요 ㅎㅎ 해시맵이란 해시맵은 대표적인 비선형 자료 구조로 키-값 쌍으로 데이터가 저장되며, 조회 속도가 빠르다는 장점이 있습니다. 하지만 데이터의 순회가 까다롭고, 내부적으로 사용되는 해시 함수의 성능에 영향을 많이 받는다는 단점도 있습니다! 빠른 조회 속도 해시맵의 조회 속도가 빠른 이유가 뭘까요?키값을 이용해서 데이터의 메모리 주소를 바로 구할 수 있는 해시 함수 덕입니다. 해시맵에 키-값 쌍..

    [자료 구조] 리스트(List)란?

    [자료 구조] 리스트(List)란?

    안녕하세요! 오늘은 자료 구조인 리스트에 대해서 공부해보겠습니다. 자료 구조에 관한 첫번째 글인데 두근두근합니다. 리스트란 리스트는 가장 기본적인 선형 자료 구조로 데이터의 추가/삭제가 용이하다는 장점이 있습니다. 동작 방식을 알아두면 굉장히 유용합니다 👍 시스템의 규모가 커질수록 리스트의 세부적인 구현 사항들을 하나하나 신경써야 합니다. 지금은 "그래야 할 수도 있다" 정도로 알아두고, 나중에 꼭 챙겨봐요! 특징 리스트의 가장 큰 특징이 뭘까요? 크기가 정해져 있지 않다! 요소를 자유롭게 추가하고, 삭제할 수 있다는 것이 리스트의 가장 큰 특징입니다. 위에서 예시로 든 그림에서는 리스트의 끝에 위치한 데이터만 추가/삭제할 수 있는 걸로 보이지만 실제로는 데이터를 원하는 위치에 추가할 수도 있고, 삭제할..