#include <string>
#include <vector>
using namespace std;
vector<int> solution(int brown, int yellow) {
vector<int> answer;
int sum = brown + yellow;
vector<pair<int,int>> v;
for(int i=sum;i>=1;i--)
{
if(sum % i == 0 && i >= sum/i) v.push_back({i, sum/i});
}
while(!v.empty())
{
auto cur = v.front();
int width = cur.first-2;
int height = cur.second-2;
if(width * height == yellow){
answer.push_back(cur.first);
answer.push_back(cur.second);
break;
}else{
v.erase(v.begin());
}
}
return answer;
}
- keypoint!
1) 가로 / 세로를 사용하여 주어진 brown / yellow와 관련된 식을 찾기
2) 해당되는 조합을 찾기
: yellow=(가로-2)*(세로-2)
를 만족시키는 가로, 세로 조합을 찾는 것