-
Notifications
You must be signed in to change notification settings - Fork 0
/
카펫.cpp
36 lines (30 loc) · 977 Bytes
/
카펫.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <string>
#include <map>
#include <vector>
using namespace std;
vector<int> solution(int brown, int yellow) {
vector<int> answer; // 가로, 세로
int plus = brown + yellow;
//약수를 구하라
map<int, int> m; // 중복 허용 X, 가로 >= 세로일 때만 저장
for (int i = 1; i <= plus; ++i) {
int num = plus / i;
// 큰 값이 가로, 몫이 크거나 같을 떄만 추가
if (num >= i)
m.insert(make_pair(num, i));
else
break;
}
map<int, int>::iterator iter;
for (iter = m.begin(); iter != m.end(); ++iter) {
int row = (iter->first) * 2;
int column = ((iter->second) * 2) - 4;
if ((row + column == brown) && (column > 0) &&
(((iter->first -2) * (iter->second -2)) == yellow)) {
answer.push_back(iter->first);
answer.push_back(iter->second);
break;
}
}
return answer;
}