# Q. 다음과 같이 0 혹은 양의 정수로만 이루어진 배열이 있을 때,
# 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 '✕' 혹은 '+' 연산자를 넣어
# 결과적으로 가장 큰 수를 구하는 프로그램을 작성하시오.
# 단, '+' 보다 '✕' 를 먼저 계산하는 일반적인 방식과는 달리, 모든 연산은 왼쪽에서 순서대로 이루어진다.
def find_max_plus_or_multiply(array):
total = 0
for num in array:
if num < 2 or total < 2:
total += num
else:
total *= num
return total
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]))
total 혹은 num이 0 or 1인 경우에만 더하고 그 외에는 곱하는게 값이 크다
- 시간복잡도
O(N) 만큼 걸립니다. 함수 구문 하나하나를 보지 않더라도, 1차 반복문이 나왔고, array 의 길이 만큼 반복한다?
그러면 O(N) 이겠구나! 생각해주시면 됩니다. 다른 계수는 다 버려버리자구요~!
'프로그래밍 > Algorithm' 카테고리의 다른 글
문자열 뒤집기 (0) | 2022.08.21 |
---|---|
반복되지 않는 문자 (파이썬 python) (0) | 2022.08.03 |
배열에서 특정 요소 찾기 (파이썬 python) (0) | 2022.08.03 |
시간복잡도, 공간 복잡도, 점근 표기법 (0) | 2022.08.03 |
알파벳 최빈값 찾기 (파이썬 python) (0) | 2022.08.02 |