[프로그래머스] 카펫 | C++
Algorithm/문제풀이
2023. 4. 14. 18:42
카펫
접근 방식
전체 카펫의 크기는 brown
과 yellow
를 더한 것과 같다.
int total = brown + yellow;
이제 우리가 구하고자 하는
전체 카펫 크기의 가로를 W, 세로를 H로 정의해보자.
이 때 brown
은 전체 카펫의 크기 W × H에서 yellow
의 갯수를 뺀 것과 같고,yellow
는 (W - 2) × (H - 2)와 같다.
이를 정리하면,
brown = 2H + 2W - 4
yellow = WH - 2H - 2W + 4이다.
이를 충족하는 W와 H를 for
문으로 탐색해서 찾아보았다.
전체 소스코드
#include <vector>
using namespace std;
vector<int> solution(int brown, int yellow) {
vector<int> answer;
int total = brown + yellow;
for(int H = 1; H*H <= total; ++H) {
if(total%H == 0) {
int W = total/H;
if( (brown == (2*H + 2*W - 4)) && (yellow == (W*H - 2*H - 2*W + 4)) )
{
answer.push_back(W);
answer.push_back(H);
}
}
}
return answer;
}
'Algorithm > 문제풀이' 카테고리의 다른 글
[백준] 토마토 | 7569 | C++ (0) | 2023.03.07 |
---|---|
[프로그래머스] 최솟값 만들기 | C++ (0) | 2023.02.18 |
[프로그래머스] 연속 부분 수열 합의 개수 | C++ (0) | 2023.01.14 |
[프로그래머스] 가장 큰 수 | C++ (0) | 2023.01.12 |
[프로그래머스] 모음사전 | C++ (0) | 2023.01.12 |