인공지능 개발자 수다(유튜브 바로가기) 자세히보기
반응형

파이썬/코딩테스트 6

[알고리즘] 정렬 (버블, 선택, 삽입, 병합, 퀵)

1. 버블정렬 (Bubble Sort)인접한 두 요소를 비교하여 필요에 따라 위치를 바꾸면서 리스트를 정렬하는 방법입니다. 버블 정렬은 여러 번의 패스를 통해 리스트를 정렬하며, 각 패스에서 가장 큰 요소가 리스트의 끝으로 이동합니다. 이 과정은 마치 "거품이 위로 올라가는" 모습과 비슷해서 버블 정렬이라고 불립니다. 최악의 경우 시간 복잡도: O(n^2) (리스트가 역순으로 정렬된 경우) 최선의 경우 시간 복잡도: O(n) (리스트가 이미 정렬된 경우, 이 경우는 최적화된 버블 정렬에서만 적용됩니다) 평균 시간 복잡도: O(n^2)1.1. 버블 정렬의 작동 원리 리스트의 첫 번째 요소부터 시작하여 인접한 두 요소를 비교합니다. 두 요소가 올바른 순서(오름차순 정렬의 경우 작은 값이 앞에, 큰 값이 뒤에..

[자료구조] 그래프

1. 그래프의 구성그래프는 노드(Node)와 노드를 연결하는 간선(Edge)으로 구성됩니다.노드(Node): 그래프 내에서 개별적인 데이터간선(Edge): 노드 간의 관계나 경로2. 그래프의 종류2.1. 방향 그래프(Directed Graph, Digraph)간선에 방향이 있어서 한 노드에서 다른 노드로의 일방향 경로만을 나타냅니다.defaultdict란?존재하지 않는 키를 조회할 때 KeyError를 발생시키는 대신, 기본값을 반환하도록 할 수 있습니다.키가 존재하지 않으면 기본값으로 초기화된 후 사용from collections import defaultdictclass DirectedGraph: def __init__(self): # defaultdict를 사용하여 인접 리스트로 ..

[자료구조] 트리

1. 트리의 기본 개념노드(Node): 트리의 기본 구성 요소로, 데이터를 포함.루트(Root): 트리의 최상위 노드.간선(Edge): 두 노드를 연결하는 선.부모 노드(Parent Node): 다른 노드를 가리키는 노드.자식 노드(Child Node): 부모 노드에 의해 가리켜지는 노드.리프 노드(Leaf Node): 자식 노드가 없는 노드.서브트리(Subtree): 트리의 일부로, 특정 노드를 루트로 하는 트리.깊이(Depth): 루트 노드에서 특정 노드까지의 경로 길이.높이(Height): 특정 노드에서 리프 노드까지의 가장 긴 경로.2. 트리의 종류모든 트리의 종류를 다 공부하기에는 양이 많으니, 중요한 트리만 보고 넘어가기로 하자.이진 탐색 트리(Binary Search Tree): 기본적인 트..

[자료구조] 스택(Stack) 큐(Queue) 해시테이블(Hash Table)

파이썬에서는 이미 구현되어있다.클래스와 함수명을 외우기만 하면 된다!!!!1. 스택 (Stack)파이썬에서 스택은 리스트를 사용하여 쉽게 구현할 수 있습니다. 스택은 LIFO (Last In, First Out)의 원칙을 따르는 선형 자료구조입니다. 즉, 가장 나중에 추가된 요소가 가장 먼저 제거됩니다. 스택의 주요 연산은 다음과 같습니다.push: 스택의 맨 위에 요소를 추가합니다. - append()pop: 스택의 맨 위 요소를 제거하고 그 값을 반환합니다. - pop()peek/top: 스택의 맨 위 요소를 조회합니다. - ls[-1]isEmpty: 스택이 비어 있는지 확인합니다. - not ls # 비어있으면 Truestack = []stack.append(1) # 스택에 1을 pus..

[자료구조] 문자열 (파이썬)

이번시간에는 문자열 사용방법에 대해 알아봅시다. 문자열도 마찬가지로 코딩테스트에서는 빠르게 처리할 수 있는 능력이 필요하다. (오래 걸리면 곤란하다) 1. 문자열 선언과 초기화 # 문자열을 선언하고 초기화하는 여러 방법 string1 = "안녕하세요" string2 = '코딩 테스트 준비 중입니다' string3 = """여러 줄에 걸쳐 문자열을 작성할 때는 이렇게 작성할 수 있습니다.""" # 출력해보기 print(string1) print(string2) print(string3) 2. 문자열 인덱싱과 슬라이싱 문자열의 슬라이싱도 마찬가지로 시작 인덱스는 포함하지만 마지막 인덱스는 포함하지 않는 것을 주의한다. 그리고, 음수를 사용할 때에는 시작 인덱스는 마찬가지로 포함 마지막 인덱스를 포함한다. (..

[자료구조] 배열 (파이썬이에서는 리스트)

시작하기 전에... 코딩테스트를 준비하면서 리스트가 뭔지 아는 수준이면, 곤란하다. 자주 사용하는 기법을 반드시 외워두고 사용하는 것이 좋겠다. 특히 함수 사용 이후 반환된 값이 어떠한 형식인지 (list 형식인지, None 값인지, int/float/str 값인지) 반드시 알아두는 것이 좋겠다. 특히 in-place 형식의 수정인지 알아 두는 것은 중요하다. 1. 리스트 생성 # 리스트 생성 numbers = [1, 2, 3, 4, 5] 2. 리스트에 값 추가 (append, insert, exend, +) append 리스트에 값 추가 In-place 수정 (함수사용시 리스트에 바로 추가됨) value = 6 numbers.append(value) print(numbers) # [1, 2, 3, 4,..

반응형