π μ‘μ€
- μμ μ μκ³ λ¦¬μ¦ λ¬Έμ λ‘ μ²μ Linked_listλ₯Ό μ²μ μ νμ λλ μμ ν μ΄ν΄κ° κ°μ§ μμ μ΄λ ΄νμ΄ μ΄ν΄νκ³ λκ²Όμλ κΈ°μ΅μ΄ μμ§λ§ κ°μ‘κ³ κ³΅λΆνλ λ κ°κ³ μ§€ μ μμμ λλ‘ μ΄ν΄νμλ€.
class Node:
def __init__(self, data):
self.data = data
self.next = None
class Linked_list:
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 not None:
cur = cur.next
cur.next = Node(data)
def print_all(self):
cur = self.head
while cur is not None:
print(cur.data)
cur = cur.next
def get_node(self, index):
cnt = 0
node = self.head
while cnt < index:
node = node.next
cnt += 1
return node
def add_node(self, index, value):
input_node = Node(value)
if index == 0:
input_node.next = self.head
self.head = input_node
return
current_node = self.get_node(index - 1)
current_next_node = current_node.next
input_node.next = current_next_node
current_node.next = input_node
def del_node(self, index):
if index == 0:
self.head = self.head.next
return
current_node = self.get_node(index - 1)
current_node.next = current_node.next.next
π TIP
- ν΄λμ€μ λν μλ²½ν μ΄ν΄λ₯Ό ν ν Linked Listλ₯Ό μ νλ μλ²½ν μ΄ν΄κ° λμλ€.
π μ¬κ·λ‘ ν μ μκ³ BFS, DFS λ‘ ν μ μλ λ¬Έμ μ΄λ€.
- λ§μ§λ§ λ°©λ²μ΄ λ΄ νμ΄κ³ μ λ νμ΄λ μ΄λ» 보μ΄λ λ€λ₯Έ λΆλ€μ νμ΄λ₯Ό μ°Έκ³ νμ¬ νμ΄λ³΄μλ€.
π‘ Tree ννλ‘ μ΄κΈ° result list λ₯Ό μ΄κΈ°ν νμ¬ κ°μ λν temp 리μ€νΈλ₯Ό μΆκ°ν΄μ£Όμ΄ λμ¨ tree ννμμ target μ κ°μλ₯Ό μ°Ύμ return ν΄μ£Όλ ν¨μμ΄λ€.
def plus_or_minus(numbers, target): result = [0] for num in numbers: temp = [] for re in result: temp.append(re + num) temp.append(re - num) result = temp return result.count(target)
π‘ μ¬κ·λ‘ νμμΌλ©° νλ‘κ·Έλλ¨Έμ€ λ΅μ 맨 첫λ²μ§Έ μλ κΈ°κ°λ§ν νμ΄μ΄λ€.
def pm2(numbers, target): # Recursive_version if not numbers and target == 0: return 1 elif not numbers: return 0 else: return pm2(numbers[:-1], target-numbers[-1]) + pm2(numbers[:-1], target+numbers[-1])
π‘ λλ pop() μ νλκ²μ΄ 무쑰건 λΉ λ₯Ό κ² κ°μ stack ꡬ쑰λ₯Ό μ°λ μκ°μ ν μμμ λ²μ΄λμ§ λͺ»νμ¬ κ°νΌλ₯Ό λͺ»μ‘μμμ§λ§ λ°°μ΄ κ²μ νμ©νμ¬ μμ λΉμ·νκ² νμ΄λ³΄μλ€.
def pm3(numbers, target): # Recursive_version if not numbers and target == 0: return 1 elif not numbers: return 0 else: temp_list = copy.deepcopy(numbers) temp = temp_list.pop() return pm3(temp_list, target-temp) + pm3(temp_list, target+temp)
π μ¬κ· μ¦ BFS, DFS κ° μ΅μνμ§ μλ€.
μκ³ λ¦¬μ¦ λ¬Έμ μ κ°μ₯ λ§μ΄ λμ€λ ννμΈ λ§νΌ λ λ§μ΄ μ°μ΅ν΄μΌκ² λ€.