Level 2. 카펫
노란색 격자의 가로 개수를 W, 세로 개수를 H로 한다.
2W + 2H + 4 = Brown
2(Yellow / H) + 2H + 4 = Brown
2(Yellow / H) + 2H + 4 - Brown = 0
2H^2 + 2Yellow + (4 - Brown)H = 0
변수 H에 대한 이차 방정식을 풀면 된다.
개수는 자연수이기 때문에 단순하게 1부터 증가시켜 해결했지만, 물론 근의 공식으로 풀 수도 있다.
#include <iostream>
#include <vector>
using namespace std;
vector<int> solution(int brown, int yellow)
{
float h = 0;
while (2 * ++h + 2 * yellow / h + 4 != brown);
return vector<int> {yellow / int(h) + 2, int(h) + 2};
}
'자료구조 & 알고리즘 > 프로그래머스' 카테고리의 다른 글
Level 2. 괄호 회전하기 (0) | 2023.04.15 |
---|---|
Level 2. 가장 큰 수 (0) | 2023.04.14 |
Level 2. 2개 이하로 다른 비트 (0) | 2023.04.12 |
Level 2. 전화번호 목록 (0) | 2023.04.11 |
Level 2. 위장 (0) | 2023.04.10 |