두 개의 정수 토마토 슬라이스와 치즈 슬라이스가 있다고 가정합니다. 다양한 버거의 재료입니다 −
- 점보 버거:토마토 조각 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, ]