두 개의 정수 토마토 슬라이스와 치즈 슬라이스가 있다고 가정합니다. 다양한 버거의 재료입니다 −
- 점보 버거:토마토 조각 4개와 치즈 조각 1개.
- 스몰 버거:토마토 2개와 치즈 1개.
[total_jumbo, total_small]을 찾아야 남은 토마토 슬라이스의 수가 0이 되고 남은 치즈 슬라이스의 수도 0이 됩니다. 나머지 토마토 슬라이스와 치즈 슬라이스를 0으로 만드는 것이 불가능하면 반환 []. 따라서 입력이matoSlices =16이고 chesseSlices =7이면 출력은 [1, 6]이 됩니다. 따라서 이것은 점보 버거 1개와 작은 버거 6개를 만들기 위해 4*1 + 2*6 =16개의 토마토 조각과 1 + 6 =7개의 치즈 조각이 필요함을 나타냅니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 다음으로 불리는 하나의 배열을 만듭니다.
- 토마토가 홀수이거나 치즈인 경우> 토마토/2 또는 토마토> 4*치즈인 경우 다음을 반환합니다.
- x :=(4 * 치즈 - 토마토) / 2
- y :=(토마토 – (2*x)) / 4
- y를 삽입한 다음 x를 배열 ans에 삽입
- 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
#include <bits/stdc++.h> using namespace std; void print_vector(vector<auto> v){ cout << "["; for(int i = 0; i<v.size(); i++){ cout << v[i] << ", "; } cout << "]"<<endl; } class Solution { public: vector<int> numOfBurgers(int t, int c) { vector <int> ans; if(t % 2 != 0 || c > t/2 || t > c*4)return ans; int x = (4 * c - t) / 2; int y = ( t - (2 * x) )/ 4; ans.push_back(y); ans.push_back(x); return ans; } }; main(){ Solution ob; print_vector(ob.numOfBurgers(16,7)); }
입력
16 7
출력
[1, 6, ]