알고리즘/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를 출력해준다.