테두리는 갈색, 가운데는 노란색으로 이루어진 카펫 격자갯수를 구하는 문제.
입출력 예를 살펴 보니...
브라운 테두리를 대각선으로 자른다는 기준으로..
브라운 갯수 /2 해서 +1을 한다..
그걸 다시 2로 나누면 세로 값이 나오고 위의 값에서 세로값 뺀것이 가로값이 된다..
예로.. 24일 경우.. /2+1 해서 13이나오고, 여기 2로 나누면 6과 나머지 1일 나오는데 여기서 6이 세로이고 뺀 값 에 나머지 1을 더해 8이 가로가 된다.
노란색이 주어지는 값이... 8-2 =6 과 6-2=4 의 값을 곱한값과 같으면된다. 라고 생각했는데 넘 복잡하여.. 다른 사람들 문제풀이를 보니...
가로세로 = brown + yellow였다...
가로-2 세로-2 = yellow.
제곱근으로 나오거나 아니면 가로가 한두칸 더 많음.
package step1;
public class 카펫 {
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
int sum = brown + yellow;
double sqrt = Math.sqrt(sum); //제곱근 구하기
int a = (int) sqrt;
int b = sum/a; //ab== sum && a-2 b-2 == yellow여야 함
if((ab!= sum) || (a-2) (b-2) != yellow) {
while (a>=1) {
a = a-1;
if (sum % a ==0) {
b = sum/a;
if ((ab == sum)&&((a-2)(b-2)==yellow)) {
break;
}
}
}
}
if (a>=b) {
answer[0] = a;
answer[1] = b;
}else {
answer[0] = b;
answer[1] = a;
}
return answer;
}
}
점심시간동안 풀려고 했는데 실패.ㅠ
결국 저녁까지 먹고 늦은 시간에 성공했다. 문제 풀이 방법에 접근 하기는 했으나 혼자 힘으론 하지 못하고 결국 구글링을 해봤다.
시간까지 초과되었는데... 내일 다시 복습해봐야겠다.