문제풀이(Problem Solving)

프로그래머스, 카펫 : C++ [CPP]

게임이 더 좋아 2021. 11. 15. 15:48
반응형
728x170

정말 수학문제다.

 

한줄로만 어떠한 것을 감싸려면 어떻게 해야하는가?

를 생각하면 바로 풀린다.

난 이런 문제가 좋다.

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

 


 

 

#맞는 풀이

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> solution(int brown, int yellow) {
    vector<int> answer;
    int temp = (brown-4)/2; // 노랑이 x,y의 길이를 가진다면 x+y 의 값
    for(int i = 1; i<=yellow; i++){
        //나눠질 때 해당 약수의 합이 temp와 같다면
        if(yellow%i == 0){
            if(yellow/i+ i == temp){
                answer.push_back((yellow/i)+2);
                answer.push_back(i+2);
                break;
            }
        }
    }
    sort(answer.begin(), answer.end());
    reverse(answer.begin(), answer.end());
    return answer;
}

 

 

x*y의 직사각형을 감싸기 위해서는

2x + 2y + 4의 블럭이 필요하다는 수학적인 지식으로 푼다.

 

 

728x90
반응형
그리드형