링크드 리스트 (Linked List)
·
Python/알고리즘 & 자료구조
링크드 리스트 (Linked List) 1. 링크드 리스트 (Linked List) 구조 : 연결 리스트라고도 함 : 배열을 순차적으로 연결된 공간에 데이터를 나열하는 데이터 구조 : 링크드 리스트는 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 데이터 구조 : 본래 C언어에서는 주요한 데이터 구조이다. 파이썬은 리스트 타입이 링크드 리스트의 기능을 모두 지원한다. : 링크드 리스트의 기본 구조와 용어 노드(Node) : 데이터 저장 단위 (데이터 값, 포인터)로 구성 포인터(Pointer) : 각 노드 안에서, 다음이나 이전의 노드와의 연결 정보를 가지고 있는 공간 2. 간단한 링크드 리스트 예 Node 구현 \(\rightarrow\) 파이썬에서는 링크드 리스트 구현 시 class를 활용 ..
스택 (Stack)
·
Python/알고리즘 & 자료구조
스택 (Stack) 스택은 박스 쌓기에 비유할 수 있습니다. 흔히 박스는 아래에서부터 위로 차곡차곡 쌓습니다. 그리고 아래에 있는 박스를 치우기 위해서는 위에 있는 박스를 먼저 내려야 합니다. : 데이터를 제한적으로 접근할 수 있는 구조 \(\rightarrow\) 한쪽 끝에서만 자료를 넣거나 뺼 수 있는 구조 : 가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조 \(\rightarrow\) LIFO(Last-In-First-Out) 구조 1. 스택 구조 스택은 LIFO 또는 FILO 데이터 관리 방식을 따른다. LIFO : 마지막에 넣은 데이터를 가장 먼저 추출하는 데이터 관리 정책 FILO : 처음에 넣은 데이터를 가장 먼저 추출하는 데이터 관리 정책 \(\rightarrow\) 대표적..
큐 (Queue)
·
Python/알고리즘 & 자료구조
큐 (Queue) 1. 큐 구조 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조 FIFO(First-In-First_Out) 또는 LIFO(Last-In-Last-Out) 방식으로 스택과 꺼내는 순서가 반대이다. 2. 알아둘 용어 Enqueue : 큐에 데이터를 넣는 기능 Dequeue : 큐에서 데이터를 꺼내는 기능 3. Python의 queue 라이브러리 활용하여 큐 자료 구조 사용하기 Queue 라이브러리에서는 다양한 큐 구조로 Queue(), LifoQueue(), PriorityQueue() 제공 Queue() : 가장 일반적인 큐 자료 구조 LifoQueue() : 나중에 입력된 데이터가 먼저 출력되는 구조(스택 구조) PriorityQueue() : 데이터마다 우선순위를 넣어, 우선순..
시간 복잡도
·
Python/알고리즘 & 자료구조
시간 복잡도 1. 알고리즘 복잡도 계산이 필요한 이유 하나의 문제를 푸는 알고리즘은 다양할 수 있음 정수의 절대값 구하기 방법1 : 정수 값을 제곱한 값에 다시 루트 씌우기 방법2 : 정수가 음수인지 확인해서, 음수일 때만 -1을 곱하기 2. 알고리즘 복잡도 계산 항목 시간 복잡도 : 알고리즘 실행 속도 공간 복잡도 : 알고리즘이 사용하는 메모리 사이즈 Big O (빅-오) 표기법 : O(N) 알고리즘 최악의 실행 시간을 표기 가장 많이/일반적으로 사용 아무리 최악의 상황이라도, 이 정도의 성능은 보장한다는 의미 \(\Omega\)(오메가) 표기법 : \(\Omega\)(N) \(\Theta\)(세타) 표기법 : \(\Theta\)(N) \(\rightarrow\) 시간복잡도 계산은 반복문이 핵심 요소이..
[Python] collections.Counter
·
Python/모듈 & 패키지 & 라이브러리
collections.Counter 클래스를 사용하여 데이터의 개수를 효율적으로 셀 수 있다. https://docs.python.org/ko/3/library/collections.html#collections.Counter collections — 컨테이너 데이터형 — Python 3.10.5 문서 collections — 컨테이너 데이터형 소스 코드: Lib/collections/__init__.py 이 모듈은 파이썬의 범용 내장 컨테이너 dict, list, set 및 tuple에 대한 대안을 제공하는 특수 컨테이너 데이터형을 구현합니다. named docs.python.org collections.Counter from collections import Counter Counter('collec..
[Algorithm] / [Python] 그리디 (Greedy)
·
Python/알고리즘 & 자료구조
1. 그리디 (Greedy) ? 영어 단어 Greedy는 '욕심 많은'이란 뜻을 가지고 있다. 이 뜻 그대로 그리디 알고리즘이란 '현재 상황에서 가장 좋은 최선의 선택을 고르는' 알고리즘을 말합니다. 순간 순간 최적이라고 생각되는 것을 선택해 나가는 방식으로 최종적인 해답을 찾지만 그것이 최적이라는 보장은 없습니다. 2. 그리디 알고리즘 문제를 해결하는 방법 선택 절차(Selection Procedure) : 현재 상태에서의 최적의 해답을 선택 적절성 검사(Feasibility Check) : 선태된 해가 문제의 조건을 만족하는지 검사 해답 검사(Solution Check) : 원래의 문제가 해결되었는지 검사하고, 해결되지 않았다면 선택절차로 돌아가 과정 반복 3. 그리디 알고리즘 적용을 위한 2가지 조..
[Python] cmp_to_key() - 원하는 기준으로 sort() (정렬) 하기
·
Python/모듈 & 패키지 & 라이브러리
https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 위 문제를 lambda 식으로 풀다가 이 상황에선 이렇게 정렬 저 상황에선 저렇게 정렬하고 싶었다. 이러한 함수를 찾다 cmp_to_key() 함수를 찾게 되어 정리해본다. [공식문서] https://docs.python.org/ko/3/howto/sorting.html?highlight=sorti..
[Python] re (정규 표현식)
·
Python/모듈 & 패키지 & 라이브러리
공식 문서 https://docs.python.org/ko/3/library/re.html re — 정규식 연산 — Python 3.10.4 문서 re — 정규식 연산 소스 코드: Lib/re.py 이 모듈은 Perl에 있는 것과 유사한 정규식 일치 연산을 제공합니다. 패턴과 검색 할 문자열은 모두 유니코드 문자열(str)과 8비트 문자열(bytes)이 될 수 있습니 docs.python.org 정규식(RE)은 일치하는 문자열 집합을 지정합니다. 이 모듈의 함수는 특정 문자열이 주어진 정규식과 일치하는지 확인할 수 있도록 합니다. 다음 메타문자 $ ( ) * + . ? [ ] \ ^ { } | 를 사용하려면 앞에 역슬래쉬(\)를 붙여 사용합니다. 기본 패턴 [abc] : a 또는 b 또는 c [a-f] ..
욱근욱
'Python' 카테고리의 글 목록 (3 Page)