본문 바로가기

Programmers

[프로그래머스][JAVA]Lv. 2 - 멀쩡한 사각형

https://school.programmers.co.kr/learn/courses/30/lessons/62048

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

수학적으로 생각을 했어야 했던 문제

최대공약수를 이용하여 대각선 방향으로 선을 그을 때 사용할 수 없는 사각형의 개수를 구하고

전체 사각형의 개수에서 빼주어 정답을 출력

class Solution {
    public long solution(int w, int h) {
        if (w < h) {
            int temp = w;
            w = h;
            h = temp;
        }
        int gcd = gcd(w, h);
        int nw = w / gcd;
        int nh = h / gcd;

        return (long) w*h - (long) (nw+nh-1)*gcd;
    }

    public int gcd(int a, int b) {
        int c = a % b;
        if (c == 0) {
            return b;
        }
        return gcd(b, c);
    }
}