Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 세 개의 숫자를 0으로 만들기

<시간/>

세 개의 숫자가 있다고 가정해 보겠습니다. 과제는 이 모든 숫자를 '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을 출력으로 반환합니다.