programmers.co.kr/learn/courses/30/lessons/42842
1. 갈색이 노란색을 감싸고 있어야하기 때문에 노란색은 사각형의 모습을 보여야합니다. 그래서 나누어지지 않는 경우 pass
2. 사각형인 경우 필요한 테두리를 계산 합니다.
3. 구한 테두리의 값이 갈색과 같은 경우 큰값을 가로, 작은 값을 세로로 해서 리턴합니다(아래 코드에서 +2하는 이유는 노란색 사각형의 가로, 세로 + 2를 하면 테두리의 가로, 세로 이기 때문)
// 프로그래머스 카펫 문제
class Carpet {
public int[] solution(int brown, int yellow) {
int row = 0;
int height = 0;
for(int i = 1; i <= yellow; i++) {
if(yellow % i != 0) continue;
int side = yellow / i;
int boundary = i * 2 + side * 2 + 4;
if(boundary == brown) {
row = Math.max(side, i) + 2;
height = Math.min(side, i) + 2;
break;
}
}
return new int[]{row, height};
}
}
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 타겟넘버 문제 (자바) (0) | 2021.03.15 |
---|---|
프로그래머스 - 도둑질 문제 (자바) (0) | 2021.03.15 |
프로그래머스 - 모의고사 문제 (자바) (0) | 2021.03.15 |
프로그래머스 - 단속카메라 문제 (자바) (0) | 2021.03.15 |
프로그래머스 - 등굣길 문제 (자바) (0) | 2021.03.15 |