Algorithm/Problems
[이것이 코테] 곱하기 혹은 더하기
Andrew_Kei
2021. 6. 7. 23:31
문제는 주어진 문자열에 대해서 순서대로 더하기나 곱하기 연산을 시행하여 나올 수 있는 최댓값을 구하는 것입니다.
연산의 과정은 실제 곱하기와 더하기의 수학적 연산 순서와 상관없이 주어진 순서대로 진행되기 때문에 단순하게 각 스텝의 연산에서 더하기가 더 큰 결과값을 만드는지, 곱하기가 더 큰 결과값을 만드는지만 확인하면 됩니다.
입력되는 값은 0을 포함한 양의 정수이므로, 더하기와 곱하기의 특성을 고려했을 때
1. 0과 1에 대해선 더하기 연산을 진행하는 것이 더 큰 값을 만든다.
ex) n * 0 = 0 <-> n + 0 = n
n * 1 = n <-> n + 1 = n + 1
2. 0과 1을 제외한 숫자에 대해선 곱하기 연산을 진행하는 것이 더 큰 값을 만든다.
위와 같은 사실을 알 수 있으므로, 해당 부분만 코드로 잘 구현하면 될 것입니다.
풀이
def solution(input_str):
num_list = [int(x) for x in input_str]
result = num_list[0]
for i in range(1, len(num_list)):
if (result in [0, 1]) | (num_list[i] in [0, 1]):
result = result + num_list[i]
else:
result = result * num_list[i]
return result