[Algorithm] 곱하기 or 더하기 (python)

19·2022년 8월 1일
0

Algorithm

목록 보기
3/28
post-custom-banner

Q. 다음과 같이 0 혹은 양의 정수로만 이루어진 배열이 있을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 '✕' 혹은 '+' 연산자를 넣어 결과적으로 가장 큰 수를 구하는 프로그램을 작성하시오.

단, '+' 보다 '✕' 를 먼저 계산하는 일반적인 방식과는 달리, 모든 연산은 왼쪽에서 순서대로 이루어진다.

# 곱하기 or 더하기 1/0이면 더하기, 나머지는 곱하기
def find_max_plus_or_multiply(array):
    result = 0;
    for element in array:
        if element <= 1 or result <= 1:
            result += element
        else:
            result *= element
    return result


result = find_max_plus_or_multiply
print("정답 = 728 현재 풀이 값 =", result([0, 3, 5, 6, 1, 2, 4]))
print("정답 = 8820 현재 풀이 값 =", result([3, 2, 1, 5, 9, 7, 4]))
print("정답 = 270 현재 풀이 값 =", result([1, 1, 1, 3, 3, 2, 5]))
  • 배열의 요소 중, 0/1은 곱하면 0이거나 제자리 수가 된다. 이 때는 곱하는것 보다 더하는 것이 최대값 도출에 더 합당하다 -> 배열의 요소가 0 or 1이면 +, 나머지는 *
  • 결과값이 0이거나 1이면, 배열의 요소가 100이더라도 0이나 제자리 수가 된다. 결과값 또한 0 or 1일때, 곱하는 것보다 더하는 것이 합당하다 -> 결과값이 0 or 1이면 +, 나머지는 *

[출력]
정답 = 728 현재 풀이 값 = 728
정답 = 8820 현재 풀이 값 = 8820
정답 = 270 현재 풀이 값 = 270
profile
하나씩 차근차근
post-custom-banner

0개의 댓글