알고리즘/이론 9

[알고리즘] DFS 와 BFS 깊이 우선 탐색, 너비 우선 탐색

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.21

[알고리즘] 링크드리스트의 값들을 자리대로 숫자로 만들어 합하기

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..

알고리즘/이론 2021.06.13

[알고리즘] 링크드리스트 add_node구현

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 ==..

알고리즘/이론 2021.06.13

[알고리즘] 문자열 뒤집기 python

# Q. # 0과 1로만 이루어진 문자열이 주어졌을 때, # 이 문자열에 있는 모든 숫자를 전부 같게 만들려고 한다. # 할 수 있는 행동은 문자열에서 연속된 하나 # 이상의 숫자를 잡고 모두 뒤집는 것이다. # 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다. # 예를 들어 S=0001100 일 때, # 전체를 뒤집으면 1110011이 된다. # 4번째 문자부터 5번째 문자까지 # 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다. # 하지만, 처음부터 4번째 문자부터 5번째 문자까지 # 문자를 뒤집으면 한 번에 0000000이 되어서 # 1번 만에 모두 같은 숫자로 만들 수 있다. # 주어진 문자열을 모두 0 혹은 모두 1로 같게 만드는 # 최소 횟수를 반환하시오...

알고리즘/이론 2021.06.12

[알고리즘] 소수 나열하기/ 소수 찾기

# Q. 정수를 입력 했을 때, # 그 정수 이하의 소수를 모두 반환하시오. # 소수는 자신보다 작은 두 개의 자연수를 곱하여 # 만들 수 없는 1보다 큰 자연수이다. input = 20 # 소수는 자기 자신과 1외에는 아무것도 나눌 수 없다. def find_prime_list_under_number(number): prime_list = [] for n in range(2, number + 1): #2부터 number까지 반복 for i in range(2,n): #2부터 number-1까지 반복 if n % i == 0: break else: prime_list.append(n) return prime_list result = find_prime_list_under_number(input) prin..

알고리즘/이론 2021.06.12

[알고리즘] 공간복잡도 파악하기

2021.06.12 - [알고리즘] - [알고리즘] 시간 복잡도 판단하기 [알고리즘] 시간 복잡도 판단하기 시간 복잡도란? 입력값과 문제를 해결하는데 걸리는 시간과의 상관관계이다. 입력값이 2배로 늘어났을때 문제 해결하는데 걸리는 시간은 몇배로 늘어날까? 입력값이 늘어나도 걸리는 시간은 덜 sso-feeling.tistory.com 공간복잡도란? 입력값과 문제를 해결하는데 걸리는 공간과의 상관관계이다. 입력값이 2배로 늘어났을때 문제를 해결하는데 걸리는 공간은 몇배로 늘어나는지를 보는 것이다. 입력값이 늘어나도 공간이 덜 늘어나는게 좋은 알고리즘이다! 저장하는 데이터의 양이 1개의 공간을 차지한다고 생각하고 계산한다 def find_max_occurred_alphabet(string): alphabet_..

알고리즘/이론 2021.06.12

[알고리즘] 문자열에서 알파벳 중에 가장 많이 나온 알파벳 찾기/ 최빈값 찾기 python

"hello my name is sparta" 이라는 문자열에 어떤 알파벳이 제일 많이 사용되었을까? 2021.06.12 - [알고리즘/이론] - [알고리즘] 최댓값 찾기 python input = "hello my name is sparta" # 문자를 숫자로 변하는 법 # ord(a) # 숫자를 문자로 변하는 법 # chr(숫자) def find_max_occurred_alphabet(string): alphabet_occurrence_array = [0] * 26 for char in string: if not char.isalpha(): continue arr_index = ord(char) - ord('a') alphabet_occurrence_array[arr_index] += 1 max_oc..

알고리즘/이론 2021.06.12