세 개의 숫자가 있다고 가정해 보겠습니다. 과제는 이 모든 숫자를 '0'으로 만들기 위한 최적 단계의 총 수를 계산하는 것입니다.
예를 들어
입력-1:
a = 4 b = 4c = 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개의 숫자를 입력으로 사용합니다.
- 두 수의 합이 'a'와 'b'가 'c'보다 크고 a> 0, b> 0인지 확인한 다음 'a'와 'b'에서 '1'을 제거합니다.
- 답에서 최소값을 찾아 결과를 반환합니다.
예
#include <bits/stdc++.h> using namespace std; int maxSteps(int a, int b, int c) { int res = 0; while (a + b > c and a > 0 and b > 0) { a--; b--; res++; } res += min(c, a + b); return res; } int main() { int a = 4; int b = 4; int c = 6; cout << maxSteps(a, b, c) << endl; return 0; }
위의 코드를 실행하면 다음과 같이 출력이 생성됩니다.
출력
7
주어진 입력 a =4, b =4 및 c =6에서 모든 숫자를 0으로 만드는 데 7단계가 필요하므로 프로그램은 출력을 7로 반환합니다.