안녕 세상아,

[프로그래머스/c++] Lv2 카펫 본문

프로그래머스

[프로그래머스/c++] Lv2 카펫

돈 많은 백수가 되고싶다 2024. 9. 18. 16:47

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. 우선 brown, yellow 합을 더한 sum 변수를 만든다. ( 가로 * 세로가 sum 값과 같음)

2. 가로 길이가 세로 길이 보다 크기 때문에 큰 값부터 for문을 돌린다. 

3. 만약 sum % i == 0 이라면, k값을 구할 수 있다. 

4. (가로값 - 2) * (세로값 - 2) == yellow 넓이면 주어진 문제의 답이다.

5. 4에서 가로값, 세로값을 구하면 answer에 넣어주면 된다. 

#include <string>
#include <vector>

using namespace std;

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

    int sum = brown + yellow;

    for (int i = sum; i >= 1; i--)
    {
        int k = 0;
        if (sum % i == 0) {
            k = sum / i;
            if ((i - 2) * (k - 2) == yellow) {
                answer.push_back(i);
                answer.push_back(k);
                break;
            }
        }
    }
    return answer;
}