728x90
카드 뭉치 최대 조합
카드 두 뭉치가 있습니다. 왼쪽 뭉치에서 카드를 하나 뽑고 오른쪽 뭉치에서 카드를 하나 뽑아서, 나온 두 수의 곱 중 가장 큰 값을 구하시오.
❧ 테스트 셋
def max_product(left_cards, right_cards):
# Code
# Test
print(max_product([1, 6, 5], [4, 2, 3]))
print(max_product([1, -9, 3, 4], [2, 8, 3, 1]))
print(max_product([-1, -7, 3], [-4, 3, 6]))
❧ 출력 예시
24
32
28
❧ 정답
Try 1
def max_product(left_cards, right_cards):
max_value = left_cards[0] * right_cards[0]
for i in range(len(left_cards)):
for j in range(len(right_cards)):
compare_value = left_cards[i] * right_cards[j]
if max_value < compare_value:
max_value = compare_value
return max_value
print(max_product([1, 6, 5], [4, 2, 3]))
print(max_product([1, -9, 3, 4], [2, 8, 3, 1]))
print(max_product([-1, -7, 3], [-4, 3, 6]))
1️⃣ 구조적이지만 파이썬의 이점, 키워드를 사용하지 않아 코드가 간결하지 않음
Try 2
def max_product(left_cards, right_cards):
max_value = left_cards[0] * right_cards[0]
for i in left_cards:
for j in right_cards:
max_value = max(max_value, i * j)
return max_value
print(max_product([1, 6, 5], [4, 2, 3]))
print(max_product([1, -9, 3, 4], [2, 8, 3, 1]))
print(max_product([-1, -7, 3], [-4, 3, 6]))
1️⃣ Brute-Force-Attack(무차별 대입 공격) 알고리즘 패러다임
2️⃣ 가장 순진한 알고리즘 접근법
3️⃣ 중첩 반복문 사용 → 시간 복잡도 : O(mn)
728x90
'📊 Algorithm > Algorithm PS' 카테고리의 다른 글
[알고리즘 일기] 10. 강남역 폭우 (0) | 2021.05.10 |
---|---|
[알고리즘 일기] 9. 가까운 매장 찾기 (0) | 2021.05.09 |
[알고리즘 일기] 7. 이진 탐색 구현 알고리즘 (0) | 2021.05.07 |
[알고리즘 일기] 6. 선형 탐색 구현 알고리즘 (0) | 2021.05.06 |
[알고리즘 일기] 5. 하노이의 탑 (0) | 2021.05.05 |