[D-1] 자료구조의 이해 (배열, 해쉬테이블) -1-
코딩테스트를 준비하기에 앞서 일단 저희는 자료구조에 대해 이해해야합니다.
가장 기본적인 자료구조 부터 알아보러 갈까요?
* 모든 코드블럭은 phython 기준으로 작성됩니다.
배열(Array)
여러분들을 정리를 좋아하시나요?
물건을 보관할때 찾기 쉽도록 일정한 위치에 두면 추후에 효율적으로 찾아낼 수 있겠죠?
또 물건을 보관하기 위한 보관함도 있다면 훨씬더 효율적으로 물건을 찾을 수 있을겁니다.
배열도 비슷한 개념으로 개발된 하나의 함수입니다.
예를들어 정수 10개를 보관하고 싶다고 가정한다면 아래와 같이 10개의 변수가 필요합니다.
a = 1;
b = 2;
~
j = 10;
하지만 이런 변수선언은 관리도 힘들 뿐더러 선언하기까지 걸리는 시간도 비효율적입니다.
이럴때 배열로 선언하면 하나의 변수안에 10개의 정수를 넣을 수 있습니다.
b = (1,2,3,4,5,6,7,8,9,10)
자 이제 b라는 배열안에 10개의 정수가 들어갔습니다. 위의 코드보다 훨씬 간결하고 효율적으로 바뀌었습니다.
또한 배열은 index라는 개념이 존재하기 때문에 원하는 값을 index를 통해서 수정하거나 호출 할 수 있습니다.
만약에 제가 7이라는 값을 가져오고 싶다면
print b[6]
와 같이 쉽게 불러 올 수 있습니다.
배열은 프로그래밍에서 데이터를 보관하고 처리하는데 있어서 가장 대중적이고 중요한 자료구조 입니다.
해시 테이블(Hash Table)
해시테이블은 알기쉽게 설명하면 물건에 이름표를 달아서 물건을 찾기 쉽게하는 개념과 동일합니다.즉 이름표(Key) 와 물건(Value) 의 쌍으로 이루어진 데이터를 저장하는데 사용됩니다.즉 데이터를 저장할 때 Key와 Value값을 한 쌍으로 데이터를 저장하고 Value값을 호출 할때 Key값을 통해서 Value값을 받을 수 있습니다. 물론 그 반대도 가능하구요!
Phython에서는 Dictionary가 이 개념을 그대로 사용하고 있습니다.
# 해시 함수
def hash_func(key):
# 문자열의 길이를 해시 값으로 반환
return len(key)
# 해시 테이블 생성
hash_table = {}
# 데이터 추가
hash_table["banana"] = hash_func("banana")
# 데이터 검색
key = "banana"
if key in hash_table:
print(f"{key}의 값: {hash_table[key]}")
else:
print(f"{key}를 찾을 수 없습니다.")
다음과 같이 코드를 작성하게 되면 banana라는 Key값을 가지고 value은 1인 데이터가 해쉬테이블 에 추가됩니다.그래서 Key값을 통해서 print를 해본다면 1이라는 값을 Return받을 수 있습니다.