프로그래머스 (완전탐색) - 카펫
해당 문제는 yellow로 만들 수 있는 사각형의 가로 세로 길이를 구하면 해당 사각형을 감싼 brown 사각형의 가로 세로 길이를 구할 수 있습니다(yellow 가로 + 2, yellow 세로 + 2). 이를 통해 해당 사각형을 감싼 brown의 갯수를 구할 수 있고, 입력받은 brown 갯수와의 비교를 통해 문제가 원하는 brown의 가로 세로 길이를 구할 수 있습니다. 문제에 가로의 길이가 세로의 길이보다 크거나 같다는 제약조건이 있어 시작 Width가 큰것부터 작은순으로 반복문이 돌도록 하였습니다.
public int[] solution(int brown, int yellow) {
int[] answer = {};
for (int yellowWidth = yellow; yellowWidth > 0; yellowWidth--) {
if(yellow % yellowWidth == 0) {
int yellowHeight = yellow / yellowWidth;
int brownWeight = yellowWidth + 2;
int brownHeight = yellowHeight + 2;
if (brownWeight * brownHeight - yellow == brown) {
return new int[]{brownWeight, brownHeight};
}
}
}
return answer;
}
'정리 > 알고리즘' 카테고리의 다른 글
탐욕법 - 구명보트 (0) | 2022.03.01 |
---|---|
탐욕법 - 큰 수 만들기 (0) | 2022.02.23 |
완전탐색 - 소수찾기 (0) | 2022.02.19 |
완전탐색 - 모의고사 (0) | 2022.02.17 |
정렬 - H-Index (0) | 2022.02.16 |
댓글