문제를 읽고 그림을 그려보면서 공통점을 찾아보면
일단
(yellow의 가로 2) + (yellow의 세로 2) + 4 => brown의 갯수
라는 것을 찾을 수 있다.
yellow의 개수만을 이용한 경우의 수 즉 (가로, 세로)를 이용해 brown의 수와 동일한지 확인만 하면 된다.
예를 들어 yellow 가 24이면
(1,24),(2,12),(3,8),(4,6),(6,4),(8,3),(12,2),(24,1)
이렇게 되는데 앞에 친구가 가로 라면
(6,4)~ 부터 시작하면 된다.
이거를 코드로 표현만 하면된다!
#include <string>
#include <vector>
#include <cmath>
using namespace std;
vector<int> solution(int brown, int yellow) {
vector<int> answer;
//가로
int row = 0;
//세로
int col = 0;
for(int i = yellow; i > 0; i--)
{
if(yellow % i == 0)
{
row = i;
col = yellow / i;
if(row * 2 + col * 2 + 4 == brown)
{
answer.push_back(row + 2);
answer.push_back(col + 2);
break;
}
}
else
{
continue;
}
}
return answer;
}