프로그래머스알고리즘
완전탐색 - 카펫
풀스택 개발자
2021. 4. 26. 17:14
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int brown, int yellow) {
int length = 0;
int weight = 0;
vector<int> answer;
int sum = brown + yellow; // 가로 세로 갯수를 구함(총 블럭 갯수)
for(int i = 3;i<=sum/3;i++)//가로는 최소 3개 이상이기때문에 3부터 시작
{
if(sum%i==0)
{
weight = sum/i;
length = i;
if((weight-2)*(length-2)==yellow)//위에서 구한 가로와 세로각각에 2를 빼서 곱하면 yellow의 갯수가 나옴
{
answer.push_back(weight);
answer.push_back(length);
break;
}
}
}
return answer;
}
test코드
#include<iostream>
#include<vector>
#include<map>
using namespace std;
int main()
{
int brown = 10;
int yellow = 2;
int length = 0;
int weight = 0;
vector<int> answer;
int sum = brown + yellow; // 가로 세로 갯수를 구함(총 블럭 갯수)
for(int i = 3;i<=sum/3;i++)//가로는 최소 3개 이상이기때문에 3부터 시작
{
if(sum%i==0)
{
weight = sum/i;
length = i;
if((weight-2)*(length-2)==yellow)//위에서 구한 가로와 세로각각에 2를 빼서 곱하면 yellow의 갯수가 나옴
{
answer.push_back(weight);
answer.push_back(length);
break;
}
}
}
for(int i=0;i<answer.size();i++)
{
cout << answer[i];
}
}