파이썬(18)
-
6. 병합정렬(Merge sort)
# 1. 병합정렬(merge sort)* 재귀 용법을 활용한 정렬 알고리즘* 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눔* 각 부분 리스트를 재귀적으로 합병 정렬을 이용해 정렬* 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병#2. 알고리즘 이해하기'''data_list = [1, 9, 3, 2]'''1. [1,9] 로 나눔2. 앞부분은 [1], [9]로 나누고 뒷부분은 [3],[2]로 나눔3. 정렬해서 합침 [1,9] , [2, 3]4. [1,9] , [2, 3] 을 합침(단, 아래와 같은 조건으로) * 1 2 이므로 리스트에 2를 추가 [1,2] * 9 > 3 이므로 리스트에 3을 추가 [1,2,3] * 9 밖에 없으니 리스트에 9를 추가 [1,2,3,9] #3. 알고리즘..
2024.10.23 -
7. 힙(Heap)
# 1. 힙(heap) 이란?* 데이터에서 최댓값과 최소값을 빠르게 찾기 위해 고안된 완전 이진 트리(complt Binary Tree)* 완전 이진 트리 : 노드를 삽입할때 최하단 왼쪽 노드부터 차례대로 삽입하는 트리# 2. 힙의 구조*** 힙은 최대값을 구하기 위한 구조(최대 힙, Max Heap)와 최소값을 구하기 위한 구조(최소 힙, Min Heap)로 분류할수 있음* 각 노드릐 값은 해당 노드의 자식 노드가 가진값보다 크거나 같다.(최대 힙의 경우)* 완전 이진 트리 형태를 가짐# 3. 힙과 이진 탐색 트리의 공통점과 차이점* 공통점 : 힙과 이진 탐색 트리는 이진트리임* 차이점 * 1. 힙은 각 노드의 값이 자식 노드보다 크거나 같음(max heap의 경우) * 2. 이진 탐색 트리는 왼쪽 자..
2024.10.21 -
4. 파이썬의 더블 링크드 리스트
1. 더블 링크드 리스트- 양방향으로 연결되어 있어서 노드 탐색이 양쪽으로 모두 가능class Node: def __init__(self, data, prev=None, next=None): self.prev = prev self.data = data self.next = nextclass NodeMgmt: def __init__(self, data): self.head = Node(data) self.tail = self.head def insert(self, data): if self.head == None: self.head = Node(data) self.tail = self.head else: node = self.head ..
2024.10.15 -
2. 파이썬의 큐와 스택
1. 큐의 구조- 가장 먼저 넣은 데이터를 가장 먼저 꺼낼수 있는 구조이다.- 줄을 서는 행위와 유사- FIFO(First-in First-out)참고 사이트 : (https://visualgo.net/en/list)1-1.큐의 용어 - Enqueue : 큐에 데이터를 넣는 기능- Dequeue : 큐에 데이터를 꺼내는 기능 1-2. 큐의 사용- 푸시 메시지(순서대로 발송)- 멀티 태스킹을 위한 프로세스 스케줄링 방식을 구현(운영체제) 1-3. 파이썬 Queue 라이브러리를 활용하여 Queue 자료구조를 사용- Queue() : 가장 일반적인 큐 자료구조를 생성- LifoQueue() : 나중에 입력된 데이터가 먼저 출력되는 구조의 큐 자료구조를 생성(스택 구조와 비슷)- PriorityQueue() :..
2024.10.15 -
26. 디렉토리 관리 프로그램
1. 압축파일 정리하기 1-1. 현재 경로 알아보기 1-2. 정리 대상 디렉토리 경로 설정하기 1-3. /"정리" 디렉토리에서 압축 파일 확인하기 1-4. 압축 파일 해제하기 1-5. 파일 이름 변경 후 압축 파일 해제하기 1-6. "고라니" 삭제 후 실행 1-7. 2. 파일명 정리하기 3. 파일명 변경하기 4. 문제
2024.10.07 -
20. 예외 처리
1. 예외(Excpetion)* 예외(Exception)는 프로그램 실행 중 발생할 수 있는 예상치 못한 문제 또는 오류 상황을 의미합니다. * 예외가 발생하면 프로그램은 중단되기 때문에 이를 적절하게 처리하여 중단을 방지하거나 오류에 대한 정보를 사용자에게 제공해야 합니다.1)print(10 / 3)#print(5 / 0) #예외 발생시 다음 print문 실행안됨 ZeroDivisionError : division by zeroprint(4 / 2)-->3.33333333333333352.0* 2. 예외 처리 기본 구조try: # 예외가 발생할 가능성이 있는 코드except ExceptionType1: # 'ExceptionType1'에는 실제 예외 유형이 들어갑니다. # Exception..
2024.09.30