ALGORITHM/PROGRAMMERS
[프로그래머스] 카펫
0298
2021. 7. 22. 09:19
https://programmers.co.kr/learn/courses/30/lessons/42842
코딩테스트 연습 - 카펫
Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과
programmers.co.kr
2021-07-22
|
1
2
3
4
5
6
7
8
|
public static int[] solution(int brown, int yellow) {
for(int i = 1; i <= Math.sqrt(yellow); i++) {
if((yellow % i == 0) && (brown == ((yellow/i+i)*2 + 4))) {
return new int[]{yellow/i+2, i+2};
}
}
return null;
}
|
cs |
#문제풀이
약수를 구한다고 생각을 했다.
예를 들어, 노란색이 24개인 경우,
(1, 24), (2, 12), (3, 8), (4, 6) 이렇게 4가지 경우의 수가 나올 수 있다. (가로 >= 세로 이므로 반대의 경우 고려 하지 않는다.)
(1,24) 인 경우, 가로는 24이고, 세로는 1 인데 그렇게 되면 갈색 격자가 24*2 + 1*2 + 4 가 필요하여 주어진 brown값과 맞지 않는다.
(4,6)인 경우, 가로는 6이고, 세로는 4이니깐 갈색 격자는 6*2 + 4*2 + 4 == 24로 주어진 갈색 격자 값과 일치한다.
이러한 방식으로 노란색의 가로, 세로 값으로 갈색 격자가 몇개인지 찾으면 된다.