알고리즘/이론
[알고리즘] DFS 와 BFS 깊이 우선 탐색, 너비 우선 탐색
2021.06.21
DFS/ BFS 자료의 검색, 트리나 그래프를 탐색하는 방법 한 노드를 시작으로 인접한 다른 노드를 재귀적으로 탐색해가고 끝까지 탐색하면 다시 위로 올라와서 다음을 탐색하여 검색하는 것. DFS (깊이 우선 탐색) 노드를 방문하고 깊이 우선으로 인접한 노드를 방문한다 끝까지 방문하면 다시 돌아와서 다시 끝까지 방문한다. 이렇게 그래프가 있을 때 깊이 우선은 숫자 순서대로 탐색한다 1 2 3 4 까지 갔다가 다시 1로 올라와서 5 6 7 을 방문하고 다시 5로 올라와서 8을 방문하고 다시 1로 올라와서 9 10을 방문한다. 재귀함수로 이를 표현한다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 # 위의 그래프를 예..
알고리즘/이론
[알고리즘] 링크드리스트의 값들을 자리대로 숫자로 만들어 합하기
2021.06.13
class Node: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self, value): self.head = Node(value) def append(self, value): cur = self.head while cur.next is not None: cur = cur.next cur.next = Node(value) def get_linked_list_sum(linked_list_1, linked_list_2): sum_1 = get_linked_list_sum(linked_list_1) sum_2 = get_linked_list_sum(linked_list_2) return su..
알고리즘/이론
[알고리즘] 링크드리스트 add_node구현
2021.06.13
2021.06.13 - [알고리즘] - [알고리즘] 링크드리스트 print_all구현 [알고리즘] 링크드리스트 print_all구현 class Node: def __init__(self, data): self.data = data self.next = None node = Node(3) first_node = Node(4) node.next = first_node print(node.next.data) class LinkedList: def __init__(self, data): s.. sso-feeling.tistory.com # index번에 value를 가진 Node를 연결해라 def add_node(self, index, value): new_node = Node(value) if index ==..
알고리즘/이론
[알고리즘] 링크드 리스트 append 구현
2021.06.13
class Node: def __init__(self, data): self.data = data self.next = None node = Node(3) first_node = Node(4) node.next = first_node print(node.next.data) class LinkedList: def __init__(self, data): self.head = Node(data) class LinkedList: def __init__(self, data): self.head = Node(data) def append(self, data): if self.head is None: self.head = Node(data) return cur = self.head while cur.next is n..
알고리즘/이론
[알고리즘] 문자열 뒤집기 python
2021.06.12
# Q. # 0과 1로만 이루어진 문자열이 주어졌을 때, # 이 문자열에 있는 모든 숫자를 전부 같게 만들려고 한다. # 할 수 있는 행동은 문자열에서 연속된 하나 # 이상의 숫자를 잡고 모두 뒤집는 것이다. # 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다. # 예를 들어 S=0001100 일 때, # 전체를 뒤집으면 1110011이 된다. # 4번째 문자부터 5번째 문자까지 # 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다. # 하지만, 처음부터 4번째 문자부터 5번째 문자까지 # 문자를 뒤집으면 한 번에 0000000이 되어서 # 1번 만에 모두 같은 숫자로 만들 수 있다. # 주어진 문자열을 모두 0 혹은 모두 1로 같게 만드는 # 최소 횟수를 반환하시오...