[プログラマー]カーペット


📒コンセプトの使用


問題を理解し、問題の条件に従うことが重要な問題である.

📌問題の説明


じゅうたんの縁は茶色で、残りは黄色に塗られています.カーペットの黄色部分の個数と茶色部分の個数を与えると、カーペットの縦横長が求められる.

📌インプリメンテーション

#include <string>
#include <vector>

using namespace std;

vector<int> solution(int brown, int yellow) {
    vector<int> answer;
    int ylow, ycol;							//노란색 가로, 세로
    int blow, bcol;							//갈색 가로, 세로
    int tmp=1;
    
    while(1){
    	//노란색의 가로 크기를 하나씩 키우면서 확인한다.
        ylow=tmp;
        if(yellow%ylow!=0){
            tmp++;
            continue;
        }
        ycol=yellow/ylow;
        
        blow=ylow+2;
        bcol=ycol+2;
        
        if(brown+4==2*(blow+bcol)){
            break;
        }
        tmp++;
    }
    
    answer.push_back(bcol);
    answer.push_back(blow);
    
    return answer;
}

📌注意点

  • の黄色と茶色の長さのそれぞれの関連性を見つけます.
  • の幅があるので、横を求めず、縦を求めず、一度に求めます.