[이.취.코.테>그리디>기출문제] 곱하기 혹은 더하기

Woonil·2022년 9월 4일
0

알고리즘

목록 보기
23/25

문제설명

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

  • 입력
    첫째 줄에 여러 개의 숫자로 구성된 하나의 문자열 S가 주어진다.(1 <= S의 길이 <= 20)
  • 출력
    첫째 줄에 만들어질 수 있는 가장 큰 수를 출력한다.

접근

왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인
첫번째 수를 기준으로 다른 하나의 수가 계속하여 더해지거나 곱해짐
'x' 혹은 '+' 연산자를 넣어 만들 수 있는 가장 큰 수
0 이나 1의 경우, 곱했을 때보다 더했을 때 결과가 더 커짐
왼쪽부터 차례대로 이루어진다고 가정
단순히 결과에 연산을 하여 결괏값을 갱신함

풀이

s = input()
first = int(s[0])
result = first
for num in s[1:]:
  num = int(num)
  if result <= 1 or num <= 1:
    result += num
  else:
    result *= num
print(result)

배운점

first = int(s[0]), result = first 와 같이 첫번째 값을 결괏값으로 설정하여 코드를 간결히 할 수 있음

profile
우니리개발일지

0개의 댓글