[Programmers] Level2 : 카펫
Question
Solution
- brown + yellow = 가로 * 세로, yellow = (가로 - 2) * (세로 - 2) 라는 이차방정식을 세울 수 있다.
-
위 식을 이용하여 조건을 만족하는 가로와 세로를 찾으면 된다.
- 추가: 이차방정식을 좀 더 잘 활용하면 이중for문이 아닌 한 개의 while문으로 해결 가능하다.
Cord
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int brown, int yellow)
{
vector<int> answer;
// 최소 카펫의 크기는 3x3
int min = 3;
int sum = brown + yellow;
// sum과 카펫의 크기가 같은 것 찾기
for (int row = min; row <= sum / min; row++)
{
for (int column = min; column <= row; column++)
{
if (sum == row * column && yellow == (row - 2) * (column - 2))
{
answer.push_back(row);
answer.push_back(column);
return answer;
}
}
}
return answer;
}