homework1,2,3

정성욱·2022년 11월 28일

링크드리스트 뒤에서 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)

0개의 댓글