각 자리가 숫자로만 이루어진 문자열 S가 주어졌을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 'X' 또는 '+' 연산자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를 구하는 프로그램을 작성하세요.
단, 모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정한다.
s = input()
#배열에 넣기
s = list(s)
arr = list(map(int,s))
result = arr[0]
i = 1
while i < len(arr):
if result == 0 or arr[i] == 0:
result += arr[i]
i += 1
elif result != 0 and arr[i] != 0:
result *= arr[i]
i += 1
elif arr[i] == 1:
result += arr[i]
i += 1
print(result)
연산자 양 옆의 수가 0이 아닐 때는 무조건 곱해야 가장 큰 수가 될 것이라고 생각했는데,
친구들과 코드 리뷰를 하다보니 '새로운 숫자가 1일 때는 곱하는 것보다 더하는 것이 낫다'라는 것을 알게 되어
해당 조건도 추가했다.
'Algorithm > Programmers' 카테고리의 다른 글
[그리디] 만들 수 없는 금액 (파이썬) (0) | 2022.07.16 |
---|---|
[그리디] 문자열 뒤집기 (파이썬) (0) | 2022.07.16 |
[그리디] 모험가 길드 (파이썬) (0) | 2022.07.16 |
[그리디] 1이 될 때까지 (파이썬) (0) | 2022.07.16 |
[그리디] 숫자 카드 게임 (파이썬) (0) | 2022.07.16 |