매일은 아니더라도 꾸준하게
728x90

분류 전체보기 34

[처음 만난 리액트] 섹션 10. List and Keys

List와 Key List 목록 Array (배열) : 자바스크립트의 변수나 객체들을 하나의 변수로 묶어 놓은 것. Key 각 객체나 아이템을 구분할 수 있는 고유한 값 아이템들을 구분하기 위한 고유한 문자열 여러개의 Component 렌더링 하기 map() 짝 지어주는 것 ReactDOM.render( {1} {2} {3} {4} {5} document.getElementById('root') ) const numbers = [1, 2, 3, 4, 5] const listItems = numbers.map((number) => {number} ) ReactDOM.render( {listItems}, document.getElementById('root') ) const doubled = numbers...

[알고리즘이론] 오일러 회로(Euler circuit) 파이썬으로 구현하기

오일러 회로(Euler circuit)는 그래프 이론에서 모든 간선을 한 번씩만 지나는 경로가 존재하는 그래프를 말합니다. 이러한 경로를 오일러 경로(Euler path)라고 부르기도 합니다. 오일러 회로를 찾는 알고리즘 중 하나인 Hierholzer 알고리즘을 파이썬으로 구현해보겠습니다. Hierholzer 알고리즘은 다음과 같은 단계를 따릅니다. 임의의 시작점을 선택하여 stack에 넣습니다. stack에서 노드 하나를 꺼내 이 노드에 연결된 간선들 중 아직 방문하지 않은 간선을 찾습니다. 해당 간선을 따라 다음 노드로 이동합니다. 이동한 노드를 stack에 넣습니다. 이동한 간선은 삭제합니다. 2~3번 과정을 반복합니다. 만약 더 이상 이동할 간선이 없다면 해당 노드를 result 리스트에 추가합니..

[알고리즘이론] 이진 트리(Binary Tree) 파이썬으로 구현하기

이진 트리(Binary Tree)는 각 노드가 최대 두 개의 자식 노드를 갖는 트리 자료구조입니다. 이진 트리는 컴퓨터 과학 분야에서 널리 사용되며, 예를 들어 검색 트리, 힙(Heap), 트라이(Trie) 등을 구현하는 데 사용됩니다. 이진 트리를 파이썬으로 구현하는 방법은 여러 가지가 있지만, 가장 기본적인 방법은 노드 클래스와 트리 클래스를 따로 정의하는 것입니다. 각 노드는 자신의 값(value)과 왼쪽 자식 노드(left)와 오른쪽 자식 노드(right)를 갖습니다. 트리 클래스는 루트 노드(root)를 갖습니다. 아래는 이진 트리를 파이썬으로 구현하는 예시 코드입니다. class Node: def __init__(self, value): self.value = value self.left = ..

[알고리즘이론] 다익스트라(Dijkstra) 파이썬으로 구현하기

파이썬에서 다익스트라(Dijkstra) 알고리즘을 구현하는 방법은 여러 가지가 있지만, 여기서는 우선순위 큐(priority queue)를 이용하여 구현하는 방법을 설명하겠습니다. 다익스트라 알고리즘은 그리디 알고리즘으로, 시작 정점에서부터 가장 짧은 경로를 가지는 정점부터 차례로 선택해가며 최단 경로를 구하는 알고리즘입니다. 이 알고리즘은 최소 힙(min heap)을 사용하는 우선순위 큐를 이용하여 구현할 수 있습니다. 아래는 파이썬으로 우선순위 큐를 이용한 다익스트라 알고리즘의 구현 예시입니다. 예제 1) import heapq def dijkstra(graph, start): pq = [] # 우선순위 큐 dist = {start: 0} # 최단 경로 길이를 저장하는 딕셔너리 heapq.heappu..

[알고리즘이론] 우선순위 큐(Priority Queue) 파이썬으로 구현하기

파이썬에서 우선순위 큐(Priority Queue)는 heapq 모듈을 이용하여 구현할 수 있습니다. heapq 모듈은 이진 힙(binary heap) 자료구조를 제공하며, 우선순위 큐는 이진 힙을 이용하여 구현됩니다. 이진 힙은 완전 이진 트리(complete binary tree)의 일종으로, 최솟값 혹은 최댓값을 빠르게 찾기 위해 구현된 자료구조입니다. 파이썬의 heapq 모듈은 기본적으로 최소힙(min heap)을 제공합니다. 따라서 최소값을 빠르게 찾을 수 있습니다. 최대값을 찾으려면 입력된 값에 대한 음수를 취하여 최소값을 찾은 후, 다시 음수를 취하는 방법으로 최대값을 구할 수 있습니다. 다음은 heapq 모듈을 이용하여 우선순위 큐를 구현한 예제입니다. import heapq pq = []..

[알고리즘이론] 슬라이딩 윈도우(Sliding Window) 파이썬으로 구현하기

슬라이딩 윈도우(Sliding Window)는 데이터 구조를 이용하여 고정된 크기의 윈도우(Window)를 일정 간격으로 이동시키면서 데이터를 처리하는 기법입니다. 이 기법은 배열, 문자열, 연결 리스트 등 다양한 자료형에 적용할 수 있으며, 주로 연속된 데이터의 부분집합을 찾거나, 부분집합을 이용한 최소 혹은 최대값 등을 찾을 때 사용됩니다. 파이썬에서는 리스트나 문자열 등의 자료형에서 슬라이싱(Slicing)을 이용하여 슬라이딩 윈도우를 구현할 수 있습니다. 슬라이싱은 연속된 일정 구간의 원소를 선택할 때 사용하는 파이썬의 기능으로, 다음과 같이 구현됩니다. lst = [1, 2, 3, 4, 5] window = lst[start:end] # start 이상 end 미만 구간 선택 위 코드에서 sta..

[알고리즘이론] 해밀턴 경로(Hamiltonian path) 파이썬으로 구현하기

해밀턴 경로(Hamiltonian path)는 그래프에서 모든 정점을 한 번씩만 방문하면서 이동하는 경로입니다. 파이썬으로 해밀턴 경로를 구하는 알고리즘은 다음과 같습니다. 그래프의 모든 정점에 대해, 해당 정점을 시작점으로 해서 DFS 탐색을 시작합니다. DFS 탐색에서, 이미 방문한 정점은 다시 방문하지 않도록 체크합니다. DFS 탐색에서, 모든 정점을 방문한 경우에는 해당 경로를 반환합니다. DFS 탐색에서, 방문하지 않은 정점을 선택해서 다음 DFS 탐색을 수행합니다. 파이썬 코드로 구현하면 다음과 같습니다. def find_hamiltonian_path(graph): def dfs(current, visited, path): visited[current] = True path.append(cur..

[알고리즘이론] 오일러 경로(Eulerian path) 파이썬으로 구현하기

오일러 경로(Eulerian path)는 그래프의 모든 간선을 한 번씩만 방문하면서 출발점과 도착점이 다른 경로입니다. 파이썬으로 오일러 경로를 구하는 알고리즘은 다음과 같습니다. 그래프가 오일러 경로가 되는지 확인합니다. 이를 위해서는 그래프가 무방향 그래프이고 모든 정점의 차수가 짝수이거나, 정확히 두 개의 정점의 차수가 홀수이어야 합니다. 오일러 경로가 있다면 시작 정점을 선택합니다. 시작 정점은 차수가 홀수인 정점 중 임의의 하나를 선택하거나, 그렇지 않으면 아무 정점이나 선택할 수 있습니다. 시작 정점에서 출발하여 갈 수 있는 경로가 있는 동안 이동합니다. 이동한 경로는 스택에 저장합니다. 이동한 경로의 마지막 노드에서 출발하여 갈 수 있는 경로가 있는 동안 이동합니다. 이동한 경로도 스택에 저..

[알고리즘이론] 그래프 파이썬으로 구현하기

파이썬에서 그래프를 구현하는 방법은 여러 가지가 있습니다. 이 중에서 대표적인 방법은 인접 리스트와 인접 행렬입니다. 인접 리스트 인접 리스트(Adjacency List)는 그래프를 연결 리스트로 표현하는 방식입니다. 파이썬에서는 딕셔너리를 이용하여 각 노드에 연결된 노드들을 리스트로 저장합니다. 예를 들어, 다음과 같은 인접리스트가 있다고 합시다. graph = { 'A': ['B', 'C'], 'B': ['A', 'C', 'D'], 'C': ['A', 'B', 'D', 'E'], 'D': ['B', 'C', 'E', 'F'], 'E': ['C', 'D'], 'F': ['D'] } 위 코드에서 graph 딕셔너리는 각 노드와 그에 대한 연결 리스트를 저장합니다. 예를 들어, 'A' 노드와 연결된 노드들..

728x90