세 개의 숫자가 있다고 가정해 보겠습니다. 과제는 이 모든 숫자를 '0'으로 만들기 위한 최적 단계의 총 수를 계산하는 것입니다.
예를 들어
입력-1:
a = 4 b = 4 c = 6
출력:
7
설명:
모든 숫자를 '0'으로 만들기 위한 최적 단계의 총 수는,
(4, 4, 6)
첫 번째와 두 번째 숫자에서 '1' 빼기 =(3, 3, 6)
첫 번째와 세 번째 숫자에서 '1' 빼기 =(2, 3, 5)
첫 번째 및 세 번째 숫자에서 '1' 제거 =(1,3,4)
첫 번째와 세 번째 숫자에서 '1' 빼기 =(0 ,3 ,3)
두 번째 및 세 번째 숫자에서 '1' 제거 =(0 ,2, 2)
두 번째 및 세 번째 숫자에서 '1' 제거 =(0, 1, 1)
두 번째와 세 번째 숫자에서 '1' 빼기 =(0, 0, 0)
따라서 모든 숫자를 0으로 만드는 총 단계 수는 '7'입니다.
이 문제를 해결하기 위한 접근 방식
이 특정 문제를 해결하기 위해 두 숫자의 합이 마지막 숫자보다 크도록 두 숫자에서 '1'을 제거합니다. 0으로 만들기 위한 최소 단계를 찾기 위해 최소 단계 수를 계산합니다.
- 3개의 숫자를 입력으로 사용합니다.
- 정렬을 사용하여 숫자를 오름차순으로 정렬
- 두 숫자의 합이 세 번째 숫자보다 작은지 확인하고 합을 반환합니다.
- 매번 두 숫자에서 '1'을 제거하므로 모든 숫자를 '0'으로 만드는 데 (n1+n2+n3)/2 단계가 걸립니다.
예
def maxScore(a: int, b: int, c: int): a, b, c = sorted((a, b, c)) if a + b < c: return a + b return (a + b + c)//2 a=4 b=4 c=6 print(maxScore(a,b,c))
위의 코드를 실행하면 다음과 같이 출력이 생성됩니다.
출력
7
주어진 입력 a=4, b=4 및 c=6에 대해 모든 숫자를 '0'으로 만드는 데 7단계가 필요합니다. 따라서 프로그램은 7을 출력으로 반환합니다.