본문 바로가기

매일 TIL

(65)
[내일배움캠프 4-3일] 스쿼드 과제, heapq, 인접 리스트, BFS 최소 힙우선 파이썬의 heapq 모듈을 먼저 공부했음.링크 : https://littlefoxdiary.tistory.com/3우선 최소 힙의 구조는 이러한 모습.부모 노드의 키값이 자식 노드보다 항상 작다. 즉 루트가 항상 가장 작은 값이 되는 구조. 파이썬에서는 heapq 알고리즘을 제공한다.heapq.heappush(heap, item) : item을 heap에 추가heapq.heappop(heap) : heap에서 가장 작은 원소를 pop 하고 리턴, 비어있다면 IndexError 호출heapq.heapify(arr) : 리스트 arr 를 즉각적으로 heap으로 변환이중 heappush와 heappop을 활용해서 문제를 해결하였음.import sysimport heapqinput = sys.std..
[내일배움캠프 4-2일] DFS, BFS, 알고리즘 스쿼드 과제 DFSDFS(Depth First Search)는 깊이 우선 탐색.말 그대로 하나의 루트를 최대한 깊숙하게 들어가며 탐색하고 다시 돌아가 다른 루트로 탐색하는 방식.자식 노드들을 순서대로 탐색한다고 생각하면 된다.이러한 그래프가 있다고 했을 때 DFS를 두가지 방법으로 구현할 수 있다. 1. 재귀함수로 구현[1, 2, 5, 6, 7, 3, 4] 순서로 탐색, 왼쪽 먼저 가는 깊이 우선 탐색이라고 생각하면 된다.def dfs_recursive(node, visited): # 방문처리 visited.append(node) # 인접 노드 방문 for adj in graph[node]: if adj not in visited: dfs_recursive(adj..
[내일배움캠프 4-1일] 알고리즘 스쿼드 과제 단어공부def most_frequent_alphabet(word): word = word.upper() word_list = list(set(word)) cnt = [] for i in word_list: cnt.append(word.count(i)) # 리스트 컴프리헨션 # cnt = [word.count(char) for char in word_list] if cnt.count(max(cnt)) > 1: return '?' else: return word_list[cnt.index(max(cnt))]word = input()print(most_frequent_alphabet(word))전부 대문자로 변경word_list를..
[내일배움캠프 19일차] 해시 함수, heap 해싱해시 테이블을 인덱싱하기 위해 해시 함수를 사용하는 것. 왼쪽으로부터 오른쪽 값을 만들어내는 가장 간단한 로직.h(x) = x mod m쉽게 말해 나눗셈 연산.h(x)가 생성된 결과, m은 테이블의 크기.m을 정하는 것이 중요, 2의 제곱수에 가깝지 않은 소수를 선택하는 것이 좋음.개별 체이닝키의 해시 값을 계산.해시 값을 이용해 배열의 인덱스를 구함.같은 인덱스가 있다면 연결 리스트로 연결.해시 테이블이라고 하면 거의 이 방식을 말함.오픈 어드레싱충돌 발생 시 탐사를 통해 빈 공간을 찾아나서는 방식.자신의 해시값과 일치하는 주소에 저장된다는 보장이 없음.윤아가 2번을 먼저 할당받는다면 서현은 해싱 값은 2 이지만 한칸 올라가 3에 저장됨.Magic methoddef __len__(self): ..
[내일배움캠프 18일차] 알고리즘&자료구조 시작 점근 표기법빅오(Big-O)표기법최악의 성능이 나오는 경우 어느 정도의 연산량인지빅 오메가(Big-Ω) 표기법최선의 성능이 나올 때 어느 정도의 연산량이 걸릴 것인지사실 이 표기법은 거의 안씀알파벳 찾기복잡도 O(n^2) 식def get_idx_naive(word): result = [-1]*len(string.ascii_lowercase) for i in range(len(word)): char = word[i] for j in range(len(string.ascii_lowercase)): lo = string.ascii_lowercase[j] if result[j] == -1 and char == lo: ..
[내일배움캠프 17일차] 가위바위보 게임 마무리 index.htmlDOCTYPE html>html lang="en">head>    meta charset="UTF-8">    meta name="viewport" content="width=device-width, initial-scale=1.0">    title>rsp_selecttitle>    link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">    style>        #user {            height: 274px;        }        canvas {            pointer-events: none;            posi..
[내일배움캠프 16일차] 가위바위보 게임 index.htmlDOCTYPE html>html lang="en">head>    meta charset="UTF-8">    meta name="viewport" content="width=device-width, initial-scale=1.0">    title>rsp_selecttitle>    link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">    style>        #user {            height: 274px;        }        canvas {            pointer-events: none;            posi..
[내일배움캠프 15일차] 가위바위보 게임 index.html            div>                                button type="button" class="btn btn-outline-secondary border-0 border-height-100" id="user" name="user"                    value="가위" data-bs-toggle="modal" data-bs-target="#resultModal" onclick="submitForm('가위')">                    img src="http://itsys.hansung.ac.kr/WebEditor/upload/images/gawi.gif">                button>             ..