GGym's Practice Notes

프로그래머스 Level2_ 카펫 (C++) 본문

Algorithm

프로그래머스 Level2_ 카펫 (C++)

GGym_ 2020. 10. 24. 01:36

b, y 가 brown의 개수와 yellow의 개수를 찾는 식이다.

식을 찾고나서 귀찮아가지고 이분탐색처럼 해버림.. 저 식을 이용한 더 좋은 방법이 있을 듯?

 

#include <string>   // Level2_ 카펫 [완전탐색]   
#include <vector>

#include <iostream>
using namespace std;


vector<int> solution(int brown, int yellow) {
    vector<int> answer;
    
    int sum = brown + yellow;

    int l=3, r=sum/3, m_l, m_r;
    while(l <= r){
        int b = r*2 + (l-2)*2;
        int y = (r-2)*(l-2);
        if( b==brown && y==yellow){
            m_l = l;
            m_r = r;
        }
        l++;
        r = sum/l;
    }
    
    answer.push_back(m_r);
    answer.push_back(m_l);

    return answer;
}

// 입출력
int main(){
    int brown, yellow;
    cin >> brown >> yellow;

    solution(brown, yellow);
    return 0;
}