본문 바로가기

알고리즘

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

728x90
반응형

 

#include <string>
#include <vector>
#include <iostream>

using namespace std;

vector<int> yak;
int yaksoo(int n) {
	for (int i = 1; i * i <= n; i++) {
		if (n % i == 0) {
			yak.push_back(i);
		}
	}
	return 0;
}

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

	for (int i = 0; i < yak.size(); i++) {
		int width = yellow / yak[i];
		int height = yak[i];

		int sum = 2 * (width + height) + 4;
		if (sum == brown) {
			answer.push_back(width + 2);
			answer.push_back(height + 2);
			break;
		}
	}

    return answer;
}

결국 모든 경우를 따져야 된다고 생각했습니다. 노란색 카펫 개수로 만들 수 있는 모양을 전부 확인해줍니다.

즉 노랑색 카펫 개수의 약수들의 경우로 카펫을 만들었을 때 갈색 카펫 개수와 맞는지 확인해주면 됩니다.

728x90
반응형