본문 바로가기

컴퓨터 공학/자료구조와 알고리즘

자료구조 - 해시(Hash) 그림으로 쉽게 이해하기

728x90
반응형

자료구조 - 해시(Hash) 그림으로 쉽게 이해하기

 

안녕하세요.

 

로스윗의 코딩캠프입니다.

 

오늘은 자료구조 중에서 중요한 해시(Hash)에 대한 강의를 진행하도록 하겠습니다

 

정말 어렵지 않으니 잘 따라와주세요~!

 

 

 

- 자료구조 해시(Hash) 비유 설명

해시(Hash)는 해싱(Hashing)의 개념만 잘 이해한다면 이전에 배웠던 자료구조에 비해 쉽습니다.


그래서 해시의 개념부터 잘 이해하는 것이 가장 중요합니다.

 

해시의 개념을 설명하기 위해서 한 가지 예시를 들어보겠습니다.

 

여러분이 컴퓨터랑 전혀 상관없는 어떤 가게에서 아르바이트를 하게 되었습니다.


여러분의 업무는 프론트에서 회원이 처음으로 방문하게 되면 회원의 사진을 찍고 회원등록을 해서


나중에 회원이 재방문을 할 때마다 그 사람의 얼굴을 보고 

 

방금들어 온 사람의 개인정보를 확인해서 방문 내역을 기록하는게 여러분의 업무입니다.

 

 

해시 설명 그림 예시
해시 설명 그림 예시

 

제가 '얼굴을 보고'라고 말씀을 했습니다.

 

회원이 들어올 때 이름을 써주세요~ 하는게 아니라 


그 사람의 얼굴을 보고 그 사람의 개인정보를 찾아내야 하는 경우입니다.

 

그리고 우리가 회원정보를 저장할 수 있는 수단은 이 알록달록한 12칸의 서랍밖에 없습니다.

 

 

해시 설명 그림 예시
해시 설명 그림 예시

 


한 칸에 한 명의 회원 정보만 저장 할 수 있다고 가정을 할게요.


다행히도 회원은 12명 이내로 항상 유지가 되기 때문에 

 

저장 공간 자체는 그렇게 큰 문제가 되지 않습니다.


하지만 서랍 바깥에는 아무런 표시도 되어있지 않고, 아무런 표시를 할수도 없습니다.


이때 회원을 등록을 할때 등록한 순서대로 서랍에 회원의 정보를 넣는다고 가정을 할께요.

 

그럼 무슨일이 생길까요?

 

 

우선 회원 등록을 할 때는 새로운 회원정보를 서랍에 넣기 위해서 어느 칸이 비었는지


앞에서부터 순서대로 최대 12칸을 모두 열어보면서 빈칸이 나올 때까지 계속 확인을 해야 할 겁니다.


그리고 회원이 재방문을 했을 때 방금 들어온 회원의 개인정보가 어느 칸에 들어있는지를 찾기 위해서

 

최대 12칸의 서랍을 마찬가지로 모두 열어서 확인해봐야겠죠.

 

그래서 여러분은 누군가의 사진, 이미지 정보가 들어오면 그 사람의 고유한 색깔을 찾아서


서랍의 12가지 색 중 하나로 출력해주는 프로그램을 개발을 했습니다.

 

이 프로그램은 같은 사람의 사진이 들어오면은 몇 번을 넣더라도 항상 같은 색을 출력해주는 프로그램이에요.


그리고 각자의 고유한 색깔을 찾아주는 프로그램이기 때문에

 

다른 사람의 사진을 넣으면 무조건 다른 색깔이 나옵니다.


예를들어서 제 사진을 이 프로그램에 넣으면 10번을 넣든 100번을 넣든 항상 파란색이 나오게 될거구요


여러분의 사진을 넣으면 몇 번을 넣어도 항상 노란색만 나오도록 만들어진거죠.

 

그래서 회원 등록을 할 때 등록할 회원의 사진을 찍어서 프로그램에 넣고

 

프로그램에서 나온 색깔에 해당하는 서랍에 회원정보를 저장하도록 합니다.

 

그리고 회원기록을 할 때도 모든 서랍을 다 열어서 회원 정보가 어디있는지 확인하지 않아도


회원이 들어온 순간 입구에 설치된 카메라로 회원의 이미지를 받아서 프로그램에 넣으면

 

어느 칸에 회원의 정보가 저장 되어 있는지도 바로 알 수 있기 때문에


지금은 서랍이 12칸이지만 만약에 서랍이 12칸이 아니라 

 

100칸이 되거나 1000칸이 되거나 이렇게 서랍의 크기가 커질 수록

 

이 프로그램의 효용성도 더 가치가 커지게 되겠죠.

 

 

- 자료구조 해시(Hash)란?

지금까지의 이야기를 해시 자료구조의 용어로 바꾸어서 같이 다시 말씀드리겠습니다.


우리가 저장하고자 하는 정보는 Value입니다.


그리고 이 Value를 구분할 수 있는 고유한 데이터를 key라고 정의를 합니다.


Key는 우리가 어떤 데이터를 쓸 지에 따라서 어떤 값을 키로 정할 수 있지만


key는 중복되지 않는 값으로 설정을 해야 합니다.


Value는 Key를 기준으로 관리되기 때문에 Key는 절대로 중복 되면 안됩니다.

 

그리고 고유의 색깔을 찾아주는 이 프로그램을 해시함수 또는 Hash Function이라고 합니다.


Hash function에는 우리가 앞에서 정한 Key를 입력으로 넣어주면 해시값이라는 결과를 출력해줍니다.


그리고 해시값을 인덱스화해서 데이터를 저장하는 것이죠.


그래서 해시 테이블은 해시값을 인덱스화 해서 데이터를 저장하는 자료구조이고


데이터가 저장되는 공간을 Buckets(버킷)이라고 합니다.


그래서 료구조에서 해시는 데이터를 빠르게 저장하고 가져오는 기법 중에 하나입니다.

 

해시의 특징과 해시함수 해시의 시간 복잡도

 

해시에 대한 나머지 설명은 다음 포스팅에서 이어서 하도록 하겠습니다.

 

로스윗의 코딩 캠프

 

미래의 개발자 여러분을 응원합니다!

 

모두 화이팅!!

 

자료구조 - 해시(Hash)의 특징

 

자료구조 - 해시(Hash)의 특징

자료구조 - 해시(Hash)의 특징 안녕하세요. 로스윗의 코딩캠프입니다. 오늘은 자료구조 중에서 중요한 해시(Hash)에 대한 강의 이전 포스팅에 이어서 진행하도록 하겠습니다. 정말 어렵지 않으니

rosweet-ai.tistory.com

 

원형큐(Circular Queue)를 반드시 사용해야 하는 이유 (ft. 그림으로 쉽게 설명)

 

원형큐(Circular Queue)를 반드시 사용해야 하는 이유 (ft. 그림으로 쉽게 설명)

원형큐(Circular Queue)를 반드시 사용해야 하는 이유 (ft. 그림으로 쉽게 설명) 안녕하세요. 로스윗의 코딩캠프입니다. 오늘은 자료구조 중에서 중요한 원형큐(Circular-Queue)에 대해서 같이 알아보겠습

rosweet-ai.tistory.com

 

728x90
반응형