일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 30 |
Tags
- github
- JS
- dev
- ES5+
- Python
- API
- DOM
- hooks
- react
- array
- JavaScript
- learn next.js
- AI
- next.js
- es6
- hatso
- 선택자
- 함수
- git
- 우아한테코톡
- ES6+
- This
- 햇소
- CSS
- html5
- gitCLI
- 최적화
- 변수
- object
- developerlife
Archives
- Today
- Total
codinghatso
알고리즘 with python.04 본문
배달의 민족 배달 가능 여부
order 받은 요소들이 menu 에 있는지 확인하는 코드 입니다.
True값을 반환한다면 달이 가능하다는 것입니다.
1번째 코드
이분탐색으로 요소들을 추측탐색하여 결과를 찾습니다.
tip. 이분탐색을 위한 전제 조건은 정렬이며, 파이썬에서는 .sort()함수를 이용해 간단하게 정렬이 가능하다.
shop_menus = ["만두", "떡볶이", "오뎅", "사이다", "콜라"]
shop_orders = ["오뎅", "콜라", "만두"]
def is_available_to_order(menus, orders):
shop_menus.sort()
for order in orders:
if not is_existing_target_number_binary(order, shop_menus):
return False
return True
return True
def is_existing_target_number_binary(target, array):
current_min = 0
current_max = len(array) - 1
current_guess = (current_min + current_max) // 2
while current_min <= current_max:
if array[current_guess] == target:
return True
elif array[current_guess] < target:
current_min = current_guess + 1
else:
current_max = current_guess - 1
current_guess = (current_max + current_min) // 2
return False
result = is_available_to_order(shop_menus, shop_orders)
print(result)
이진탐색이 아닌 다른 방법으로 더욱 간단하게 값을 찾을 방법을 고민해봐야합니다.
다양한 문제에 맞는 다양한 자료구조가 존재하기 때문에 특정 하나의 자료구조가 가장 좋다고 할 수 없는 이유가 됩니다.
2번째 코드
set이라는 집합구조를 이용하여 중복을 자동으로 제거 하였고 때문에 코드가 간소화 되었습니다.
shop_menus = ["만두", "떡볶이", "오뎅", "사이다", "콜라"]
shop_orders = ["오뎅", "콜라", "만두"]
def is_available_to_order(menus, orders):
menus_set = set(menus) # set은 집합을 의미 한다.
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)
'코테일지' 카테고리의 다른 글
알고리즘 with python.06 (0) | 2021.06.13 |
---|---|
알고리즘 with python.05 (0) | 2021.05.30 |
알고리즘 with python.03 (0) | 2021.05.30 |
알고리즘 whit python.02 (0) | 2021.05.30 |
알고리즘 with python.01 (0) | 2021.05.20 |
Comments