Algorithm/프로그래머스
[프로그래머스] 카펫 (자바) / 완전 탐색
미스터로즈
2021. 10. 4. 08:18
문제


입출력

문제풀이
import java.util.*;
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
// x*2+y*2=brown+4;
// (x-2)*(y-2)=yello;
// xy-2*x-2*y+4=yello;
// xy=yello+brown;
int k = yellow + brown;
int j = 0;
for(int i = 1 ; i <= Math.sqrt(k);i++){
if(k%i==0){
j = k/i;
if(i*2+j*2-4==brown){
answer[0]=j;
answer[1]=i;
}
}
}
return answer;
}
}
※ 내 생각
이 문제는 완전 탐색을 이용하는 문제입니다.
// x*2+y*2=brown+4;
// (x-2)*(y-2)=yellow;
아래 식을 풀면 xy -2*x-2*y+4=yellow;이고
위 식을 대입하여 정리하면 xy = brown + yellow가 됩니다.
for 문의 범위는 가로길이가 세로길이 보다 크고
둘다 xy의 약수 이기 때문에
제곱근의 범위를 돌리면 중복되지 않고 해결할 수 있습니다.
테스트 결과
