프로그래머스 - 카펫
풀이
- sum = brown 타일의 수 + yellow 타일의 수
- 가로 * 세로 = sum 인 경우의 수를 계산
- yellow 타일이 brown 타일로 감싸진 직사각형(or 정사각형)이기 때문에 yellow 타일의 수가 주어졌을 때 만들어질 수 있는 사각형이 한정되어 있음
- for문에서 i를 증가시키면서
(i+2) * (yellow/i+2) = sum
인 경우를 찾음
코드
class Solution {
public int[] solution(int brown, int yellow) {
int sum = brown + yellow;
int[] result = new int[2];
for (int i = 1; i <= yellow / i; i++) {
if (yellow % i == 0) {
if ((i + 2) * (yellow / i + 2) == sum) {
result[0] = yellow / i + 2;
result[1] = i + 2;
break;
}
}
}
return result;
}
}