※ 웹 환경에 최적화된 서식이므로 웹 페이지로 열람함을 권장.
카펫(링크)
풀이
(갈색 격자 + 노랑 격자 = 총 격자 개수) 이므로 가능한 가로 격자, 세로 격자의 개수들을 알 수 있다. 여기에 ((가로 격자 - 2) * (세로 격자 - 2) = 노랑 격자) 라는 사실을 추가하면 정답이 되는 가로, 세로 격자의 개수를 알 수 있다.
C++ 코드
#include <iostream>
#include <vector>
using namespace std;
vector<int> solution(int brown, int yellow) {
int check, total = brown + yellow;
vector<int> ans(2);
for (int h = 3; h <= total / 2; ++h) {
if (total % h != 0) continue;
int w = total / h;
if ((check = (w - 2) * (h - 2)) == yellow) {
ans[0] = w; ans[1] = h;
return ans;
}
}
return ans;
}
int main(int argc, char* argv[]) {
if (argc < 3) { cout << "ERROR" << endl; return -1;}
vector<int> answers = solution(stoi(argv[1]), stoi(argv[2]));
cout << answers[0] << " " << answers[1] << endl;
return 0;
}
'문제 해결 알고리즘 기초 > 완전 탐색' 카테고리의 다른 글
[프로그래머스] 수식 최대화 - 완전 탐색 (0) | 2021.03.28 |
---|---|
[프로그래머스] 소수 찾기 - 완전 탐색, 재귀, 소수 판별법 (0) | 2021.03.06 |
[알고스팟] 시계 맞추기 - 완전 탐색, 재귀 (0) | 2020.08.20 |
[알고스팟] 여행하는 외판원 문제 - 완전 탐색, 재귀 (0) | 2020.08.04 |
[알고스팟] 게임판 덮기 - 완전 탐색, 재귀 (0) | 2020.07.31 |