본문 바로가기
SMALL

알고리즘-python/개념 정리하기4

[알고리즘/파이썬(Python3)] 캐시 알고리즘 중 LRU 알고리즘 캐시 알고리즘은 최근 사용하거나 자주 사용하는 데이터 항목을 빠른 계산이 가능한 메모리 위치에 유지시키는 구조입니다. 정보를 제공하는 속도를 높이기 위해 새로운 데이터가 발생했을 때 캐시에서 가장 오레 전에 사용된 데이터를 제거하고 새로운 데이터를 삽입하는 알고리즘입니다. 페이지 교체 알고리즘이라고 하면 설명이 자세하게 나옵니다. Page replacement algorithm - Wikipedia This article is about algorithms specific to paging. For an outline of general cache algorithms (e.g. processor, disk, database, web), see Cache algorithms. In a computer op.. 2021. 7. 13.
[자료구조/파이썬(Python3)] 힙 (Heap) 힙(heap)은 최댓값 및 최솟값을 찾아내는 연산을 빠르게 하기 위해 고안된 완전이진트리(Complete binary tree)를 기본으로 한 자료구조(tree-based structure)로서 다음과 같은 힙 속성을 만족합니다. - A가 B의 부모노드이면, A의 key 값과 B의 key 값 사이에는 대소관계가 성립한다. 그래서 대소관계에 따라 힙에는 두 가지 종류가 있습니다. - 최소 힙(min heap) : 부모노드의 키 값이 자식노드의 키값보다 항상 작은 힙 - 최대 힙(max heap) : 부모노드의 키 값이 자식노드의 키값보다 항상 큰 힙 코딩테스트에서 최솟값이나 최댓값을 반복해서 호출해야하는 경우, heap을 사용해서 효율성을 증가시킬 수 있습니다. 파이썬에는 heapq 모듈로 힙 알고리즘을 .. 2021. 7. 8.
백준 알고리즘 문제에서 입력 받기 프로그래머스 알고리즘 문제풀이 연습을 시작한지도 벌써 3개월차로 접어들었습니다. 2단계 문제를 풀다가 백준 져지를 알게 되었고, 스터디에서 두 가지 문제풀이를 병행하고 있어요. 두 가지를 풀다보니 프로그래머스 풀이에서 문제되지 않았던 부분에서 고민이 있었습니다. "입력을 어떻게 받지...?" input()을 알긴 해도 입력값을 끊어서 받는다던가, 한꺼번에 받는다던가 하는 부분에서 막혔습니다. 이번 기회에 입력받기에서 알게된 부분을 정리해봅니다. split() 문자열을 특정 구분자로 나누고 싶을 때 split() 함수 사용 a = '1 2 3 4'.split() print(a) #['1', '2', '3', '4'] '1 2 3 4' 문자열을 공백을 분리기준으로 삼아서 '1', '2', '3', '4' 로.. 2020. 7. 9.
[copy모듈/deepcopy메서드] 얕은 복사와 깊은 복사 백준 코드를 풀다가 어려워서 모범답안을 해설하는 중에 깊은 복사(deep copy) 개념이 나왔습니다. 복사에도 여러 종류가 있군요. 객체의 복사에는 얕은 복사(shallow copy)와 깊은 복사(deep copy)가 있습니다. 우선 docs.python.org의 개념정리입니다. 더보기 가변(mutable) 컬렉션 또는 가변(mutable) 항목들을 포함한 컬렉션의 경우, 때로 컬렉션을 변경하지 않고 사본을 변경하기 위해 복사(copy)가 필요합니다. 얕은 복사와 깊은 복사의 차이점은, 복합 객체(리스트 또는 클래스 인스턴스와 같은 다른 객체를 포함한 객체)에만 유효합니다. ▷ 얕은 복사: 새로운 복합 객체를 만들고, (가능한 범위까지) 원본 객체를 가리키는 참조를 새로운 복합 객체에 삽입합니다. ▷ .. 2020. 7. 9.
LIST