프로그래머스알고리즘

완전탐색 - 카펫

풀스택 개발자 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];
	}
	 
}