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