알고리즘/GREEDY
(그리디알고리즘) 곱하기혹은더하기 파이썬 풀이
김염인
2021. 12. 30. 16:34
출처:: 코딩테스트 교재 P313
분류:: 그리디알고리즘
1. 문제 이해 및 해결과정
- 입력 조건 : 첫째 줄에 여러 개의 숫자로 구성된 하나의 문자열 S가 주어집니다. (1<=S의 길이<=20)
- 출력 조건
첫째 줄에 만들어질 수 있는 가장 큰 수를 출력합니다.
테스트케이스 1) 02984 -> 576
테스트케이스 2) 567 -> 210
2. 풀이방법
N = list(map(str, input().strip()))
result = 0
while(N):
A = int(N.pop(0)) #0
if A == 0:
continue
if result == 0 and A != 0:
result += A
continue
if result * A > result + A:
result = result * A
else:
result = result + A
print(result)
해설 )
아이디어: 숫자를 사용자로부터 입력받아 리스트로 변경한다. 초기 result 값을 0으로 설정하고 result 값이 0이면 while 반복문을 continue해준다 그리고 0이 아닐경우 덧셈과 곳셈 계산중 큰 값을 result에 넣어준다 그리고 최종적으로 N에 저장된 리스트의 각 원소 값들이 전부 pop이되면 result를 출력해준다.