알고리즘
[알고리즘/Programmers] LV2. 카펫 (Java)
자기개발자 유자
2024. 7. 8. 17:06
728x90
반응형
오늘의 학습 키워드
- 완전 탐색
오늘의 회고
1. 문제
2. 해결 방안
public static int[] solution(int brown, int yellow) {
int answer[] = new int[2]; // 가로, 세로
int sum = brown + yellow;
for(int i=3; i<sum; i++) { // 세로 3 이상
int j = sum / i; // i:세로, j:가로
if((sum % i != 0) || (j < 3)) continue; // 가로 3 이하이면 해당 X
// 옐로우 크기가 일치하면 리턴
if(((j-2)*(i-2)) == yellow) {
answer[0] = j;
answer[1] = i;
return answer;
}
}
return answer;
}
- 옐로우+갈색 합의 약수를 찾아 (가로,세로)로 나올 수 있는 값을 찾는다.
- 옐로우가 최소 1칸이라면 가로, 세로 모두 3 이상이어야 한다. -> 가로, 세로 탐색 시 각 값이 3 이상이어야 한다
- 옐로우는 중앙에 차지하고 갈색은 무조건 사이드 라인 1줄만 놓여져있다 -> 옐로우 크기를 수식화할 수 있다
- 옐로우 크기를 수식화한 식과 옐로우 크기가 일치하면 리턴한다.
3. 피드백
- 약수로 경우의 수까지 뽑았으나 그 뒤에 어떻게 해야할지 생각이 안났다. 가로,세로가 3 이상이어야 한다는 것, 옐로우 크기를 일치하면 리턴 하는 것을 캐치한다면 잘 풀 수 있는 문제 같다.
728x90
반응형