[이코테] Greedy - 곱하기 혹은 더하기

윤형찬·2020년 12월 7일
0

algorithms_greedy

목록 보기
6/14

문제

각 자리가 숫자 (0부터 9)로만 이루어진 문자열 S가 주어졌을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 'X' 혹은 '+'연산자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를 구하는 프로그램을 작성하세요.
단, +보다 X를 먼저 계산하는 일반적인 방식과는 달리, 모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정합니다.

입력조건

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

출력조건

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

입력예시

02984

출력예시

567

풀이

아이디어

  • 문자열에서 제일 좌측에 있는 수를 result로 하고 오른쪽으로 한개씩 연산한 후 그 값을 result로 바꿈
  • result와 오른쪽 숫자 하나씩 비교해서, 1이하인 수가 있으면 더하기연산
data = input()

result = int(data[0])

for i in range(1, len(data)):
    num = int(data[i])
    if result <= 1 or num <= 1:
        result += num
    else:
        result *= num

print(result)
profile
https://github.com/velmash

1개의 댓글

comment-user-thumbnail
2022년 10월 31일

안녕하세요 IT 바다에서 항해를 하는 도중에 문제의 정답에 약간의 오타를 발견하여 댓글을 남기게 되었습니다. 576인 정답이 567로 작성되어 있는 것 같습니다. 확인 부탁 드립니다.

답글 달기