728x90
중앙은 노란색으로 칠해져있고 테두리 한줄만 갈색으로 칠해져있다.
갈색 타일의 개수와 노란색 타일의 개수가 주어질 때 가로 >=세로의 길이를 배열로 반환
각 타일의 정사각형 넓이 1이므로 갈색과 노란색 타일의 합은 전체 직사각형의 넓이가 나온다.
직사각형의 넓이는 가로*세로 이므로
brown+yellow = answer[0]*answer[1] 과 같다.
yellow는 중앙의 직사각형이므로 yellow의 가로 세로 길이는 yellow의 약수이다.
곱하여 yellow가 되는 두 약수에 각각 가로, 세로 1씩 총 2를 더한 값이 전체 크기의 가로와 세로이다.
public int[] solution(int brown, int yellow) {
int[] answer = new int[2];
//brown+yellow = return[0]*return[1]
//yellow의 약수 (2,1)이라하면 약수 세트 가로와 세로에 각각 2씩 더한 값이 리턴
for(int i=1; i*i<=yellow;i++){
if(yellow%i==0){
int r = i;
int l = yellow/i;
if((r+2)*(l+2)==brown+yellow){
answer[0] = Math.max(r+2,l+2);
answer[1] = Math.min(r+2,l+2);
return answer;
}
}
}
return answer;
}
'Java > Coding Test' 카테고리의 다른 글
기능 개발 문제 풀이 (0) | 2023.10.07 |
---|---|
올바른 괄호 문제 풀이 (1) | 2023.10.05 |
크레인 인형뽑기 게임 문제 풀이 (0) | 2023.10.04 |
로또의 최고 순위와 최저 순위 문제 풀이 (0) | 2023.10.04 |
다트 게임 문제 풀이 (0) | 2023.10.04 |