프로그래머스 문제 구분란에는 완전탐색이라고 써있지만, 오히려 그리디 같은 사고가 더 중요했다고 생각한다. 코드구현자체는 쉬운편이지만 규칙을 생각하는게 더 오래걸렸다. 처음에는 yellow 가 4칸이라고 할때 그 4칸이 어떻게 생겼는지 알수없지않을까 라고 생각하였는데 그게 문제를 해결 할 수있는 열쇠였다.
즉, (가로-2) * (세로-2) = yellow 칸 수
이 규칙을 찾는것이 중요 포인트였다.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int brown, int yellow) {
vector<int> answer;
int garo = 3; //최소값 :3
int sero = 3;
while (garo>=sero) {
garo = (brown + yellow) / sero;
if ((garo - 2) * (sero - 2) == yellow) {
answer.push_back(garo);
answer.push_back(sero);
break;
}
else {
sero++;
}
}
return answer;
}
int main() {
solution(10, 2);
return 0;
}