#파이썬 7

9. 너비우선 탐색

#1. 너비우선 탐색(Breadth-First Search)* BFS : 대표적인 그래프 탐색 알고리즘* 정점들과 같은 레벨에 있는 노드들(형제 노드들)을 먼저 우선 탐색하는 방식* 한 단계씩 내려가면서 해당 노드와 같은 레벨에 있는 노드들(형제 노드들)을 먼저 순회함graph = dict()graph['A'] = ['B', 'C']graph['B'] = ['A', 'D']graph['C'] = ['A', 'G', 'H', 'I']graph['D'] = ['B', 'E', 'F']graph['E'] = ['D']graph['F'] = ['D']graph['G'] = ['C']graph['H'] = ['C']graph['I'] = ['C', 'J']graph['J'] = ['I']graph-->{'A': ..

5. 퀵정렬(Quick sort)

1. 분할 정복(Divide and Conquer)* 문제를 여러 개의 독립적인 하위 문제로 나눠서 각각 해결한 후, 그 결과를 합쳐서 원래 문제를 해결하는 방식* 재귀적으로 하위 문제를 풀고, 합병 과정을 거치는 게 특징2. 분할 정복을 사용하는 대표적인 정렬: 퀵 정렬* 정렬 알고리즘의 꽃* 기준점(pivot)을 정해서 기준점보다 작은 데이터는 왼쪽, 큰 데이터는 오른쪽으로 모으는 함수를 작성* 왼쪽, 오른쪽은 재귀용법을 사용해서 다시 동일 함수를 호출하여 위 작업을 반복함2-1. 퀵 정렬 알고리즘 구현하기* 만약 리스트 갯수가 한 개이면 해당 리스트를 반환* 그렇지 않으면, 리스트 맨 앞의 데이터를 기준점(pivot)으로 설정* left, right 리스트 변수를 만듦* 맨 앞의 데이터를 뺀 나머지..

4. 동적 프로그래밍(Dynamic Programming)

1. 동적 프로그래밍(Dynamic Programming)* 복잡한 문제를 작은 하위 문제들로 나누고 그 결과를 재사용하여 효율적으로 문제를 해결하는 알고리즘 기법* 주어진 문제를 풀 때,같은 하위 문제를 여러 번 푸는 대신,그 결과를 저장해 두고 필요할 때 다시 사용하는 방식1-1. 동적 프로그래밍의 접근 방식* 메모이제이션(Bottom-Down): 큰 문제를 풀기 위해 재귀적으로 하위 문제들을 풀면서, 이미 계산된 하위 문제는 저장된 값을 재사용하는 방식* 테이블 방식(Bottom-Up): 작은 하위 문제부터 시작해 차례대로 계산해가며, 최종적으로 큰 문제를 해결하는 방식1-2. 동적 프로그래밍 알고리즘* 피보나치 수열 n을 입력받아서 계산* [피보나치](https://namu.wiki/w/%ED%9..

3. 파이썬의 링크드 리스트

1. 링크드 리스트(Linked list)- 떨어진 곳에 존재하는 데이터를 화살표로 연결하여 관리하는 구조- C언어에서느 중요한 자료구조이지만, 파이썬에는 리스트 타입이 링크드리스트 역할도 이미 지원함-데이터의 삽입과 삭제가 매우 빠름2. 링크드 리스트 용어- 노드(Node) : 데이터 저장 단위(데이터, 포인터)로 구성- 포인터(Pointer ) : 각 노드안에서 다음이나 이전의 노드와의 연결정보를 가지고 있는 공간#링크드 리스트 구현파이썬에서는 링크드 리스트를 구현할때 클래스를 주로 활용class Node: def __init__(self,data): self.data = data self.next = None# Node 객체와 Node 객체의 연결하기(포인터 활용)node1 = Nod..

23. 파일 입출력을 위한 단어장 만들기

##문제아래 조건을 만족하는 영어 단어장을 만들어보자.실행 예)1. 등록하기 2. 출력하기 3. 저장하기 4. 불러오기 5. 종료하기 * 1을 선택 했을 경우(지정한 데이터는 파일에 저장하지 않음)단어를 입력하세요: apple뜻을 입력하세요: 사과레벨을 입력하세요: 1등록되었습니다.* 2를 선택 했을경우(메모리에 저장된 모든 영단어를 리스트로 출력)apple: 사과(레벨1)banana: 바나나(레벨1) *  3을 선택 했을경우(메모리에 저장된 모든 영단어를 파일에 저장, words.txt) 저장되었습니다 * 4를 선택했을 경우(파일에 저장된 모든 영단어를 메모리로 불러옴)불러왔습니다 * 5를 선택 했을경우(반복을 끝내고 프로그램을 종료함)프로그램을 종료합니다, 단, 프로그램을 종료할때까지 반복하여 메뉴를..

파이썬(python) 2024.10.07

18. 파이썬의 상속

1. 파이썬의 상속파이썬에서 상속은 한 클래스의 속성과 메서드를 다른 클래스에 전달하는 기능을 의미합니다. 상속을 사용하면 기존의 코드를 재사용하고 확장할 수 있습니다.기본적으로 파이썬의 모든 클래스는 .object라는 기본 클래스로부터 상속받습니다.상속의 기본 정의class Parent: passclass Child(Parent): pass상속의 사용 예시)1)class Animal: def __init__(self, name, age): self.name = name self.age = age def eat(self, food): print(f'{self.name} {food} 먹습니다.') def sle..

파이썬(python) 2024.09.30

16. 객체지향과 클래스

1.객체지향 프로그래밍(Object-Oriented Programming, OOP)- 객체지향 프로그래밍은 소프트웨어를 설계하고 구현하는 데 사용되는 중요한 프로그래밍 패러다임 중 하나입니다. 이 패러다임은 프로그램을 "객체"라고 불리는 독립적인 개체로 나누고, 이러한 객체들 간의 상호작용을 통해 프로그램을 구성하는 개발 방법론입니다.1-1) 함수형 프로그래밍- 함수형 프로그래밍은 함수(Function)를 가장 중요하게 생각하는 프로그램을 작성하는 패러다임입니다. - 함수는 다른 함수에 전달되거나 반환될수 있으며, 함수들 간의 조합을 통해 복잡한 작업을 수행합니다. - 상태를 변경하지 않고 데이터를 처리하고, 부작용(side effect)을 최소화하려는 노력이 있습니다.- 함수형 언어로는 Haskell,..

파이썬(python) 2024.09.27