shop_menus = ["만두", "떡볶이", "오뎅", "사이다", "콜라"]
shop_orders = ["오뎅", "콜라", "만두"]
def is_available_to_order(menus, orders):
menus_set = set(menus)
for order in orders:
if order not in menus_set:
return False
return True
result = is_available_to_order(shop_menus, shop_orders)
print(result)
shop_menus = ["만두", "떡볶이", "오뎅", "사이다", "콜라"]
shop_orders = ["오뎅", "콜라", "만두"]
처음에 리스트 정렬하고, for 문으로 돌리고 하다가.. 잘 안돼서 실패
생각해보니깐 set함수로 집합으로 만들면 중복검사를 편하게 할 수 있다.
numbers = [2, 3, 1]
target_number = 0
result_count = 0 # target 을 달성할 수 있는 모든 방법의 수를 담기 위한 변수
def get_count_of_ways_to_target_by_doing_plus_or_minus(array, target, current_index, current_sum):
if current_index == len(array): # 탈출조건!
if current_sum == target:
global result_count
result_count += 1 # 마지막 다다랐을 때 합계를 추가해주면 됩니다.
return
get_count_of_ways_to_target_by_doing_plus_or_minus(array, target, current_index + 1,
current_sum + array[current_index])
get_count_of_ways_to_target_by_doing_plus_or_minus(array, target, current_index + 1,
current_sum - array[current_index])
get_count_of_ways_to_target_by_doing_plus_or_minus(numbers, target_number, 0, 0)
# current_index 와 current_sum 에 0, 0을 넣은 이유는 시작하는 총액이 0, 시작 인덱스도 0이니까 그렇습니다!
print(result_count) # 2가 반환됩니다!
요즘 자료규조랑, 알고리즘에 대해서 공부하는 시간을 늘리고 있는데, 재미는 있지만
아직은 이해가 안되고 어려운 부분들이 많이 있다.
알고리즘도 상황에 따라서 맞는 선택을 하는 연습을 해야 할 것 같다.
이문제라면 완전탐색, 이문제라면 이진탐색, 아니면 구현문제 등등
종류도 많고, 익숙해지려면 문제를 최대한 많이 풀어보는 수 밖에 없을 것 같다.