본문 바로가기

코딩테스트 연습/programmers

[Programmers]완전탐색 > 카펫(c++)

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

 

코딩테스트 연습 - 카펫

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

programmers.co.kr

 

S = w*h
yellow = (w-2) * (h-2)

brown = (w*h) - yellow

공식을 적용해서 풀었다.

 

 


main포함 코드

#include <vector>
#include <iostream>
#include <string>
using namespace std;

vector<int> solution(int brown, int yellow) {
    vector<int> answer;
    int w, h, S;
    S = yellow+brown;
    
    for(int i=3;i<S/2;i++){
        if(S == i*(S/i)) {
            h = i;
            w = S/i;
            if( (w-2)*(h-2) == yellow )break;
        }
    }
    
    answer.push_back(w);
    answer.push_back(h);
    
    return answer;
}

int main(int argc, const char *argv[])
{
    int brown = 24;
    int yellow = 24;
    solution(brown, yellow);

    return 0;
}