본문 바로가기

Programmers/Level2

멀쩡한 사각형

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