본문 바로가기

Algorithm/Brute Force

(C++) - 프로그래머스(고득점 kit - 완전탐색) : 까펫

반응형

programmers.co.kr/learn/courses/30/lessons/42842

 

코딩테스트 연습 - 카펫

Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과

programmers.co.kr

brute force문제였습니다.

 

풀이방법

 다음 공식이 성립합니다. 

 yellow = (answer.first - 2) * (answer.second - 2)

 brown = answer.first * answer.second - yellow

 yellow에 대입한다면

 brown = answer.first * answer.second - (answer.first - 2) * (answer.second - 2)이 됩니다. 따라서 n^2으로 answer.first, answer.second의 후보를 찾아주시면 됩니다.

Code

#include <string>
#include <vector>

using namespace std;

vector<int> solution(int brown, int yellow) {
    int flag = 0;
    for(int i = 1; i <= 5000; i++){
        for(int j = 1; j<= 5000; j++){
            if(yellow == (i-2) * (j-2) &&
              brown == i*j - (i-2) * (j-2))
                return {max(i,j),min(i,j)};            
        }
    }
}