보통 넓이값을 비교해가면서 행열의 길이를 체크하는 풀이가 많았는데, 생각이 나는데로 풀다보니 다음과 같이 풀었다.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int brown, int yellow)
{
for(int i=brown/2-1; i>=3; i--)
{// brown/2 는 행+열-2의 길이이다.
int col = i, row = brown/2 - i;
if ((col - 2)*row == yellow) return {col, row+2};
// (행-2)*열이 곧 내부에 들어가는 yellow의 개수이다.
}
return {};
}
이해하기 쉽게 예시를 들자면
oooo
oXXo
oooo
와 같이 4(행)x3(열)의 크기이면 중앙에 들어가는 yellow의 개수는 행-2 x 열-2 개이다.