1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
class Solution {
public long solution(long w, long h) {
long answer = w * h;
long a = w, b = h;
// 유클리드 호제법
while (b != 0) {
long r = a % b;
a = b;
b = r;
}
answer -= w + h - a;
return answer;
}
}
|
cs |
사각형이 색칠되는 규칙은 다음과 같다.
가로 w, 세로 h, 최대 공약수 a라고 했을 때, ( w / a + h / a - 1 ) * a 이다.
즉, w와 h의 비율로 가장 작은 사각형이 a개가 나오고 그 안에서 색칠이 된다.
색칠이 되는 갯수가 가로 + 세로 - 1 이기 때문에 1을 감소시키는 과정이 필요하다.
저 식을 풀어쓰면 ( ( w + h ) / a - 1 ) * a = w + h - a 이다.
색칠된 갯수를 구했으므로 w * h - ( w + h - a)를 하면 값을 구할 수 있다.
'Programmers > Level2' 카테고리의 다른 글
삼각 달팽이 (0) | 2021.07.24 |
---|---|
다리를 지나는 트럭 (0) | 2021.07.23 |
주식가격 (0) | 2021.07.23 |
위장 (0) | 2021.07.23 |
H-Index (0) | 2021.07.22 |