프로그래머스 카펫 - C++Algorithm/PS2024. 11. 17. 14:37
Table of Contents
문제
풀이
우선 수식을 세워 확인을 해봤다.
$2x + 2(y - 2) = brown$
$2x + 2y - 4 = brown$
$(x - 2)(y - 2) = yellow$
$xy - 2x - 2y + 4 = yellow$
$소거법...$
$xy = brown + yellow$
간단한 수식을 세워보면 $xy = brown + yellow$가 나오게 된다.
하지만 해당 수식을 만족하는 $x$와 $y$값이 무조건 맞는 것은 아니다.
이는 $x$와 $y$에 대한 수식일 뿐, $brown$과 $yellow$에 대한 수식은 아니기 때문이다.
따라서 $x$와 $y$값이 나오면 $brown$과 $yellow$의 값과 맞는지 다시 검증해줘야 한다.
이 과정만 반복해주면 쉽게 구할 수 있다.
C++ 코드
#include <string>
#include <vector>
#include <iostream>
using namespace std;
vector<int> solution(int brown, int yellow) {
vector<int> answer;
int sum = brown + yellow;
int X = sum;
while (true) {
if (sum % X == 0) {
int Y = sum / X;
if ((X - 2) * (Y - 2) == yellow) {
answer.push_back(X);
answer.push_back(Y);
break;
} else {
X--;
}
} else {
X--;
if (X == 0) {
break;
}
}
}
return answer;
}
'Algorithm > PS' 카테고리의 다른 글
백준 2839번 설탕 배달 - SWIFT (0) | 2024.11.19 |
---|---|
프로그래머스 피로도 - C++ (0) | 2024.11.18 |
프로그래머스 모의고사 - C++ (0) | 2024.11.16 |
백준 1374번 강의실 - C++ (0) | 2024.11.15 |
백준 2212번 센서 - C++ (0) | 2024.11.14 |
@노근 :: NOGUEN 블로그