Python/파이썬 알고리즘 자료구조 3

시간복잡도 공간복잡도 Big-O

Big-O 표기법이란? 알고리즘의 효율성을 평가할 때 가장 중요한 개념 중 하나가 바로 'Big-O 표기법'입니다. 알고리즘이 문제를 해결하는 데 얼마나 빠른지, 즉 실행 시간이 어떻게 증가하는지를 분류하는 방법입니다. 또한, 알고리즘이 실행될 때 필요한 메모리 양이 어떻게 증가하는지를 나타내는 데에도 사용됩니다. 시간복잡도(Time Complexity) 시간복잡도는 알고리즘이 문제를 해결하는 데 걸리는 단계의 수 또는 연산의 수를 나타냅니다. 예를 들어, 리스트의 모든 요소를 한 번씩만 확인하는 선형 검색 알고리즘은 시간복잡도가 O(n)으로 표현됩니다. ex) 예제 1 - 선형 검색def linear_search(arr, x): for i in range(len(arr)): if arr[i] == x:..

해시 테이블

1. 해시 구조 Key에 Value를 저장하는 데이터 구조 Hash Table size만큼의 배열로 생성해서 사용 파이썬 Dictionary로 사용 2. 용어 정리 Hash : 임의 값을 고정 길이로 바꾸는 것 Hash Table : 키 값의 연산에 의해 직접 접근이 가능한 데이터 구조 Hashing function : Key로 데이터 위치를 찾을 수 있는 함수 Hash Value : Key르 hashing function으로 연산해서 찾을 수 있는 값 Slot : 한 개의 데이터를 저장할 수 있는 공간 Hash Table에 Value 저장하고 읽어보기 def storage_data(data, value): key = ord(data[0]) hash_address = hash_func(key) hash_..

파이썬 알고리즘 인터뷰 해시 문제

해시맵 디자인 1) 개별 체이닝 방식을 이용한 해시 테이블 구현 class MyHashMap : def __init__(self, key = None, value = None): self.size = self.table = colections.defaultdict(ListNode) def put(self, key:int, value: int) -> None: if self.table[index].value is None: # value로 해야 존재하지 않는 인덱스 조회에 대한 에러 발생 X self.table[index] = ListNode(key, value) return #해시 충돌 발생 경우 chaning으로 풀기 #인덱스에 노드가 존재하는 경우 연결 리스트로 처리한다 while self.table..