[이코테] 그리디 - 곱하기 혹은 더하기

최성민·2022년 1월 27일
0


🔦 문제

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


입력

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

출력

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


✍️ 풀이

  • 각 자리가 숫자(0~9)로만 이루어진 문자열 s가 주어짐

  • 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 'x' 혹은 '+' 연산자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를 구해야한다. 02984 라는 문자열이 주어지면 만들어질 수 있는 가장 큰 수는 (((0 + 2) x 9) x 8) x 4) = 576

  • 나는 이렇게 접근했다. 문자열 s를 for문으로 각각 한자리씩 돌아보며 0이면 넘어가고 0이 아니면 answer 에 곱해줬다.


🛠 나의 코드

s= input()
answer = 1
for i in s:
    if int(i) != 0:
        answer*=int(i)

print(answer)

🎈 책 정보

이것이 취업을 위한 코딩테스트다 with 파이썬

0개의 댓글