728x90
반응형
실습 설명
카드 두 뭉치가 있습니다.
왼쪽 뭉치에서 카드를 하나 뽑고 오른쪽 뭉치에서 카드를 하나 뽑아서, 두 수의 곱이 가장 크게 만들고 싶은데요. 어떻게 하면 가장 큰 곱을 구할 수 있을까요?
함수 max_product는 리스트 left_cards와 리스트 right_cards를 파라미터로 받습니다.
left_cards는 왼쪽 카드 뭉치의 숫자들, right_cards는 오른쪽 카드 뭉치 숫자들이 담겨 있고, max_product는 left_cards에서 카드 하나와 right_cards에서 카드 하나를 뽑아서 곱했을 때 그 값이 최대가 되는 값을 리턴합니다.
def max_product(left_cards, right_cards):
max_val = left_cards[0] * right_cards[0]
for i in left_cards:
for j in right_cards:
# print("i[%d] , j[%d]" %(i, j))
max_val = max(max_val, (i*j))
return max_val
# 테스트 코드
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
오답 1
음수가 나올 경우를 예상 못함
def max_product(left_cards, right_cards):
# 여기에 코드를 작성하세요
left_max = max(left_cards)
right_max = max(right_cards)
return left_max*right_max
# 테스트 코드
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
18
오답 2
max함수를 쓰면 코드를 줄일 수 있음
def max_product(left_cards, right_cards):
max = -10000000
for i in left_cards:
for j in right_cards:
# print("i[%d] , j[%d]" %(i, j))
val = i * j
if val > max :
max = val
return max
# 테스트 코드
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]))
728x90
반응형
'알고리즘' 카테고리의 다른 글
[파이썬] 런던 폭우 - 브루트 포스 (0) | 2023.09.16 |
---|---|
[파이썬] 가장 가까운 매장 찾기 - 브루트 포스 ★ (1) | 2023.09.16 |
[파이썬] 하노이의 탑 - 재귀함수 ★ (1) | 2023.09.16 |
[파이썬] 뒤집힌 리스트 - 재귀 함수 (0) | 2023.09.15 |
[파이썬] 각 자릿수의 합 - 재귀 함수 (0) | 2023.09.12 |