프로그래머스 카펫

최성현·2021년 2월 14일
0

문제 링크

😊코드 설명

프로그래머스 문제 구분란에는 완전탐색이라고 써있지만, 오히려 그리디 같은 사고가 더 중요했다고 생각한다. 코드구현자체는 쉬운편이지만 규칙을 생각하는게 더 오래걸렸다. 처음에는 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;
}
profile
후회없이

0개의 댓글