View
😃 || 정리
완전탐색(Brute-Force Search) 알고리즘이란 이름 그대로 처음부터 끝까지 하나하나 탐색해보는 방법이다.
예를 들어 핸드폰 4자리숫자를 풀 때 0000부터 9999까지 직접 쳐보는 것을 생각하면 된다.
시간이 걸리기 때문에 탐색할 것이 적은 곳에 사용하는 것이 좋다.
그리고 시작과 끝을 고려하는 것이
메모리와 시간을 줄이는 것 모두에 좋다.
😃 || 풀이 방법
class Solution {
public int[] solution(int brown, int yellow) {
int[] answer = {};
int carpetLen = brown + yellow;
for(int i=1; i<= carpetLen; i++){
if(carpetLen%i == 0){
//전체 직사각형
int cCol = carpetLen / i;
int cRow = carpetLen / col;
//노란색 직사각형
int yCol = cCol - 2;
int yRow = cRow - 2;
if(yCol*yRow == yellow && cCol >= cRow){
answer = new int[]{cCol , cRow};
break;
}
}
}
return answer;
}
}
- 갈색과 노란색을 합한 값이 가로세로를 곱한 값과 같다
- 노란색도 직사각형 모양이다.
처음에는 가운데에 있는 노란색 직사각형을 고려하지 않아서
테스트케이스 몇개가 통과되지 않았다.
질문하기에서 힌트를 얻어 50, 22 -> {24,3} 을 테스트케이스에 추가하고 보니
노란색 직사각형을 고려하지 않아서 통과되지 않았다는 것을 알고
알고리즘을 다시 짜서 통과했다.😹
'Algorithm' 카테고리의 다른 글
LeetCode :: Valid Anagram (Java) (0) | 2021.04.30 |
---|---|
프로그래머스 :: 같은 숫자는 싫어 (Java) 알고리즘 풀이 (0) | 2021.04.26 |
프로그래머스 :: 이상한 문자 만들기 (Java) 알고리즘 /split (String regex, int limit) 정리 (0) | 2021.04.24 |
LeetCode :: Happy Number (Java) (0) | 2021.03.06 |
프로그래머스 :: 3진법 뒤집기 (Java) (0) | 2021.02.21 |
reply