Python 18

시간복잡도 공간복잡도 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..

알고리즘 먼데이 2주차 3번 출석부 문제 해결했다 이말이야

import sys from functools import cmp_to_key N, k = map(int, sys.stdin.readline().split()) def cmp(a, b): if a[0] == b[0]: return a[1] < b[1] else: return a[0] < b[0] arr = [] # [[string1, int1], [string2, int2], ...] for _ in range(N): tmp = list(sys.stdin.readline().split()) arr.append(tmp) arr = sorted(arr,key=cmp_to_key(cmp)) arr = sorted(arr,key = lambda x: (x[0],x[1])) print(arr[k-1][0]+' '..

알고리즘 먼데이 3주차 Python

0커플 점수의 합한 값이 0이 되는 두 명을 짝지음 4번째 규칙을 지키지 못해서 두명이 소개팅을 못 받음. 소개팅을 진행하지 못한 사람의 점수를 합한 값을 구하라. 지인의 수가 N(int) 그리고 다음 줄에 N명에 대한 점수가 있다. 처음에는 list를 sort해서 index로 풀려고 했지만 아무리 생각해도 아닌 것 같아서 절대값 함수를 이용해서 같으면 중복이니까 없에는 것으로 하려고 했다. map 함수로 모든 요소를 abs, 절대값화 해주면 같은 점수는 없으니까 3이 2개 2가 2개 4가 1개 5가 1개 이런식으로 나오게 될 것이고, 나는 그러면 2개짜리가 아니라 하나만 나오는 녀석들을 딕셔너리에서 뽑아서 다시 리스트에 넣고 sum()을 통해서 합을 구하면 되는 노릇이다. 근데 이렇게 하면 절대값이라서..