이코테 기출 문제 2.곱하기 혹은 더하기

MongCheol·2022년 6월 21일
post-thumbnail

곱하기 혹은 더하기

각 자리가 숫자로만 이루어진 문자열 S가 주어졌을 때,
왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 'x' 혹은 '+' 연산자를 넣어
결과적으로 만들어질 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오.
단, +보다 x를 먼저 계산하는 일반적인 방식과는 달리, 모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정한다.
예를 들어 02984라는 문자열이 주어지면,
만들수 있는 가장 큰 수는 ((((0 + 2) X 9) X 8) X 4) = 576 이다.
또한 만들어질 수 있는 가장 큰 수는 항상 20억 이하의 정수가 되도록 입력이 주어진다.


입력 조건

  • 첫재 줄에 여러 개의 숫자로 구성된 하나의 문자열 S가 주어집니다. (1 <= S의 길이 <= 20)

출력 조건

  • 첫째 줄에 만들어질 수 있는 가장 큰 수를 출력합니다.

입력 예시 1

02984


출력 예시 1

576


입력 예시 2

567


출력 예시 2

210


# Input
data = input()

# Try
def func(data):
    result = 0
    for i in range(len(data)):
        x = int(data[i])
        if x == 0 or x == 1:
            result += x
        else:
            if result == 0:
                result += 1
            result *= x
    return result


print(func(data))

02984
576

# 입력값 1
data = '111111'
# 예상 출력값 : 6
print(func(data))

6

# 입력값 2
data = '000000'
# 예상 출력값 : 0
print(func(data))

0

# 입력값 3
data = '91091'
# 예상 출력값 : 91
print(func(data))

91


1회차 풀이 후기

0 또는 1인 경우에 더하기, 그 이외에는 곱하기 연산 이라는 풀이가 쉽게 생각나서 빠르게 풀 수 있었다.

profile
자그마한 개미

0개의 댓글