알고리즘(6)
-
# [알고리즘] 해쉬테이블 구현하기
🤔 해시테이블이란?📌 해시테이블은 는 키 벨류 매핑 자료구조 이다. 🤔 해시 함수 란?📌 해시함수는 는 아웃풋이 범주내 임의의 수인 함수 이다. ✍️ Test Code # hash 테이블 테스트 ht = HashTable()## 1이라는 키로 1이라는 벨류 저장 ht.put(1, 1)## 2이라는 키로 2이라는 벨류 저장 ht.put(2, 2)# k-v Get 기능 테스트assert ht.get(1) == 1assert ht.get(2) == 2## 저장하지 않은 키는 -1 을 리턴assert ht.get(3) == -1## 12,22,32 PUT 기능 testht.put(12, 1)ht.put(22, 2)ht.put(32, 3)## get testassert ht.get(12) == 1asse..
2024.12.29 -
#[알고리즘] Que 문제
🤔 문제 1부터 N까지 차례대로 줄을 섰을 때, 맨 앞에 선 사람만 들여보내주고 그 다음 순서인 사람은 제일 뒤로 보내는 특이한 줄서기가 있습니다.예를 들어 N=6인 경우, 123456 이 순서대로 줄을 서있을 것입니다. 이때 제일 먼저 1이 입장하고 남은 순서는 23456이 됩니다. 2는 두 번째 순서이므로 제일 뒤로 보내서 34562가 됩니다. 다시 3이 입장하여 4562가 되고, 4가 두 번째 순서이므로 5624가 됩니다. 5가 입장하고 246, 2가 입장하고 64, 6이 입장하여 4, 마지막으로 4가 입장하게 됩니다.N이 주어질 때 제일 마지막으로 입장하는 숫자를 계산하는 프로그램을 작성하세요.from collections import dequedef test_problem_queue(num)..
2024.12.28 -
# [알고리즘] Que 구현
📌 요약 : Que 의 기능인 pop, push 를 class로 구현 🤔 Que 란?📌 Que 는 입출력방향이 서로반대인 선형자료구조 이다. 1. push 구현 class Queue: def __init__(self): ## 가장 앞에 있는 녀석 front self.front = None ## LL 의 node 활용 하여 구현 def push(self, value): ## push 할때 self 의 front 가 비어있는지 확인하는게 중요 if not self.front: # 비어있는 경우 self.front = Node(value) ## 노드를 집어넣어주고 끝 return ..
2024.12.28 -
# [알고리즘] 연결리스트로 구현한 펠린드롬
📌 본 포스팅은 연결리스트로 구현한 펠린드롬 에 대한 내용을 다룹니다.1.연결리스트 펠린드롬⓵ 연결리스트를 사용하지 않았을 때import sys a = sys.stdin.readline().rstrip()reverse_a="".join(list(reversed(a)))print(True if a==reverse_a else False)⓶ 연결리스트 를 사용하여 펠린드롬인지 확인 할때def isPalindrome(ln): from structures import F F.b("\n펠린드롬 인지 확인합니다") arr = [] head = ln.head print(f"head :{head} ") if not head: print("아무 것도 없으므로 펠린드롬입니다"..
2024.12.19 -
# [알고리즘] 알고리즘의 기초 연결리스트 편
📌 본 포스팅은 연결리스트 알고리즘에 대한 내용을 다룹니다. 1. 연결리스트와 어레이리스트와 linked list 의 성능 : 값을 꺼내기가 쉽냐, 넣기가 쉽냐, 지우기가 쉽냐로 판단조회관점에서는 리스트가 훨씬 좋다. array[3] 하면 조회가 O(1) 로 끝. linked list는 처음부터 살펴야하기때문에 최악의 경우 처음부터 하나씩 조회하면서 목표 메모리까지 도달 = O(n)리스트는 삽입할때 싹다 한칸씩 옴기고 4번째 메모리에 데이터를 넣어야함.연결리스트는 상자가 다음 상자를 가리키게 만드는 구조라서 가리키는 위치만 바꾸면 됨 삽입에 특화됨.caseArrayLinkedListReadO(1)O(N)Insert, DeleteO(N)O(1)Append꽉차면 새 메모리 할당노드 끝 동적 추가결론접근 ..
2024.12.18 -
# [알고리즘] 알고리즘에 대하여 01
2024.12.17 07:57 📌 본 포스팅은 파이썬으로 알고리즘을 구현하는 내용을 다룹니다. 1. 점근 표기법. 5050 을 구하는데 101 번계산, 50번계산 후자가 더 좋은 알고리즘이다. 빅오(Big-O) : 최악의 경우 연산량. ex) 배열 내에 특정 숫자가 존재 여부 ->True False 반환 arr = [3,5,6,1,2,4]def is_number_exit(num,arr): return True if num in arr else Falseis_number_exit(3,arr) # Trueis_number_exit(120,arr) # False☞ 가장 좋을 때는 1번, 가장 나쁠때는 n 번 계산 O(1), O(n) 2.시공간 복잡도 알고리즘을 평가하는 법. 걸리는 시간, 설치시..
2024.12.17