문제 출처


  • 이것이 취업을 위한 코딩테스트다 with 파이썬
  • Chapter 11 - 그리디 2. 곱하기 혹은 더하기

제한


  • 시간 제한 : 1 초
  • 메모리 제한 : 128 MB

문제


  • 각 자리가 숫자(0부터 9)로만 이루어진 문자열 S가 주어졌을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 ‘X’ 혹은 ‘+’ 연산자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오. 모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정한다.

입력


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

출력


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


👀 풀이


  • 처음에는 연산에 참여하는 두 수 중 하나라도 0이라면 더하기 연산을 수행하고 나머지는 모두 곱하기 연산을 수행하게 짰다.
  • 책에 나와 있는 예제는 맞았지만 정답 코드를 보니까 두 수 중 하나가 1인 경우를 고려하지 않은 코드였다.
  • 1일 때엔 더하는 것이 곱하는 것보다 더 크기 때문이다.
  • 그래서 최종 수정한 코드는 연산에 참여하는 두 수 중 하나라도 1 이하라면 더하기 연산을 수행하고 나머지는 모두 곱하기 연산을 수행하도록 했다.

코드