가로+세로 = (Brown/2)+2, 가로*세로 = Yellow+Brown
인 것만 알면 풀 수 있다.class Solution { public int[] solution(int brown, int yellow) { int[] answer = new int[2]; int multi = yellow+brown; int sum = brown/2+2; for(int i=1;i<=multi;i++){ if(multi%i==0){ int a = i; int b = multi/i; if(a+b==sum){ if(a>b){ answer[0] = a; answer[1] = b; } else{ answer[0] =b; answer[1] = a; } } } } return answer; } }
multi의 약수들 중에서, 더해서 sum이 되는 수들을 찾으면 된다.
가로가 세로보다 크거나 같다고 했으므로, 큰 수를 answer[0]에, 작은수를 answer[1]에 넣어주면 끝!
for(int i=2;i<=Math.sqrt(multi);i++)
로 제곱근을 사용하면 시간이 훨씬 단축된다. 앞으로 약수는 이렇게 구하자!