Programers:カーペット(フルナビゲーション)
6007 ワード
じゅうたん
コード#コード# #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;
/* N*M=sum 이 되는 수 중에서, N >= M 인 조건을 만족하는 수를 저장 */
for(int i=sum;i>=1;i--)
{
if(sum % i == 0 && i >= sum/i) v.push_back({i, sum/i});
}
/* "yellow=(가로-2)*(세로-2)" 를 만족시키는 가로, 세로 조합을 찾는다! */
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;
}
#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;
/* N*M=sum 이 되는 수 중에서, N >= M 인 조건을 만족하는 수를 저장 */
for(int i=sum;i>=1;i--)
{
if(sum % i == 0 && i >= sum/i) v.push_back({i, sum/i});
}
/* "yellow=(가로-2)*(세로-2)" 를 만족시키는 가로, 세로 조합을 찾는다! */
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;
}
1)与えられたbrown/黄色に関連する式を横/縦で検索する
2)該当する組合せを検索する
:
yellow=(가로-2)*(세로-2)
を満たす縦横組合せReference
この問題について(Programers:カーペット(フルナビゲーション)), 我々は、より多くの情報をここで見つけました https://velog.io/@neity16/Programers-카펫-완전탐색テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol