본문 바로가기
728x90
반응형

자료구조4

[자료구조 with Python] 7. 선형 자료 구조 - 배열(6), Hash 충돌과 개방 주소법(Open Address) 자료 구조 마지막 포스팅이 언제였더라...(뒤적뒤적) 세상에... 3년 전이 마지막 자료구조 포스팅이었다. 필자가 최근 밀린 포스팅들을 몰아서 작성하다보니, 놓치고 있던 카테고리들이 상당히 많은데, 최근에 자료 구조 서적을 다시 뒤적거릴 일이 생긴 참에 이 카테고리를 방문(?)하게 되었다. 하여간, 마지막 자료구조 포스팅의 내용은 Hash 충돌을 해결하는 방법 중 하나인 Chaining이었는데, 이번 포스팅에서는 Hash 충돌을 피하는 또 다른 방법인 개방 주소법(Open Address)에 대해 알아보려한다. 1. Open Address 개요 Hash값의 충돌로 Hash List의 동일 Bucket(index라고 생각하자)에 둘 이상의 자료가 저장되는 경우, Hash 충돌이 일어났다고 말한다. 아무래도 .. 2024. 3. 5.
[자료구조 with Python] 5. 선형 자료 구조 - 배열(3), 선형/이진 검색 앞선 포스팅에서 배열에 대해 설명을 할 때, 배열은 서로 연관된 정보를 하나의 이름으로 관리하는 자료구조라는 뉘앙스로 설명했던 적이 있다. 관련있는 자료를 인접한 메모리에 저장하기 때문에 일반적인 변수에 선언하여 값을 저장하는 것보다 훨씬 빠르게 값을 검색하는 것이 가능해진다. 배열에 존재하는 값을 검색하는 가장 기본적인 방법은, 배열의 0번 index부터 순차적으로 비교하면서 같은 값이 있는지 확인하는 것이다. 컴퓨터의 성능이 좋거나 배열의 크기가 그렇게 크지 않다면 나쁘지 않은 방법이나, 역으로 배열의 크기가 무수히 커지거나, 컴퓨터 성능이 그렇게 좋지 않은 경우라면 이런 기본적인 검색 방법으로는 효율성이 떨어질 수 밖에 없다. 이러한 이유로, 배열 내에 존재하는 값을 효율적으로 검색하기 위한 몇몇 .. 2021. 1. 5.
[자료구조 with Python] 4. 선형 자료 구조 - 배열(2), 기본 메서드/함수 동작 Python에서 사용되는 모든 자료형은 Class로 정의가 되어 있으며, 각 자료형은 각각의 Method를 가지고 있다. 예를 들어 Python에서 배열의 한 종류인 List는 배열은 내부에 정의된 값의 순서를 반대로 지정하는 reverse() 메서드, 배열의 가운데 또는 마지막에 값을 추가하는 insert(), append() 메서드, 혹은 리스트의 모든 내용을 삭제하는 clear() 메서드 등... Python이 아닌 C와 같이 오래 전에 컴퓨터를 제어하는 언어들은, 위와 같이 배열의 값을 추가하거나, 빼거나, 순서를 변경하는 모든 작업을 일일이 코딩해주어야 했다. 즉, 프로그래머들이 특정 기능을 수행하는 함수를 만들어 코드를 어떻게 작성하느냐에 따라 프로그래밍의 효율과 처리 시간에 차이가 날 수 밖.. 2021. 1. 2.
[자료구조 with Python] 1. 왜 갑자기 자료구조인가? 필자가 프로그래밍에 주로 사용하는 언어는 Python이다. 물론, 컴공을 전공한 것도 아니고, 독학으로 깨작깨작 배운 것이 전부이기 때문에 실무를 진행하는 프로그래머만큼은 실력이 쌓이지는 않았다만, 나름 필자의 업무도 Python을 이용한 스크립트 작성이 없지는 않은데다(심지어 그 결과도 좋았고), 혼자 쏠쏠히 필요한 프로그램을 만들어서 사용할 정도는 되었기 때문에 그 이상으로 배움에 큰 의지를 가지지 못해왔던 것도 사실이다. 아, 그래서 왜 갑자기 자료 구조를 보게 되었느냐고? 사연이 있다. 필자는 현재 SE를 업으로 삼고 있다. 이 분야를 잘 모르는 분들에게 조금 풀어서 설명을 하자면, System Engineer인데, 회사에서 판매하는 서버 등에 대해 작동 원리를 익히고, 시스템을 구축하고 문제가 .. 2020. 12. 10.
728x90
반응형