링크드리스트 뒤에서 k번째 숫자 찾기
class Node:
def __init__(self,data):
self.data = data
self.next = None
class LinkedList:
def __init__(self,value):
self.head = Node(value)
self.count = 0
def append(self,value):
curr = self.head
while curr.next is not None:
curr = curr.next
curr.next = Node(value)
self.count += 1
def print_all(self):
curr = self.head
while curr is not None:
print(curr.data)
curr = curr.next
def print_kth_node_from_last(self,index):
kth = self.count - index + 1
curr = self.head
for i in range(kth):
curr = curr.next
print(curr.data)
linkedlist = LinkedList('head')
linkedlist.append(1)
linkedlist.append(2)
linkedlist.append(3)
linkedlist.append(4)
linkedlist.append(5)
linkedlist.append(6)
linkedlist.append(7)
linkedlist.append(8)
linkedlist.append(9)
linkedlist.append(10)
linkedlist.print_kth_node_from_last(3)
binary search 검색
shop_menus = ["만두", "떡볶이", "오뎅", "사이다", "콜라","짜장면","탕수육","제육볶음","치킨","피자","맥주","소주"]
shop_orders = ["오뎅", "콜라", "만두"]
def shop_menu(orders,menus):
sorted_menus = sorted(menus)
for i in orders:
if order_menu(i,sorted_menus):
print('번 만에 찾음',i)
else:
return False
def order_menu(order,sorted_menus):
min = 0
max = len(sorted_menus) - 1
half = (min+max)//2
count = 0
while min <= max:
if order == sorted_menus[half]:
count += 1
print(count, end="")
return True
elif order > sorted_menus[half]:
count += 1
min = half + 1
half = (min+max) // 2
elif order < sorted_menus[half]:
count += 1
max = half - 1
half = (min+max) // 2
else:
return False
shop_menu(shop_orders, shop_menus)
reculsive 덧셈 뺄셈 모든경우의수 확인후 카운트하기
numbers = [1, 1, 1, 1, 1]
target_number = 3
result_count = 0
def plus_minus_function(numbers, target_number, curr_index, curr_sum):
if curr_index == len(numbers):
if curr_sum == target_number:
global result_count
result_count += 1
return
plus_minus_function(numbers, target_number, curr_index + 1, curr_sum + numbers[curr_index])
plus_minus_function(numbers, target_number, curr_index + 1, curr_sum - numbers[curr_index])
plus_minus_function(numbers, target_number, 0, 0)
print(result_count)