[프로그래머스] 멀쩡한 사각형 (유클리드 호제법, 사각형에서 대각선을 긋는 공식)

쿼카쿼카·2023년 6월 3일
0

알고리즘

목록 보기
62/67

문제

코드

function solution(w, h) {
    function gcd(a, b) {
        const remainder = a%b;
        if(remainder === 0) return b;
        return gcd(b, remainder);
    }
    
    return w*h - (w + h - gcd(w, h));
}

유클리드 호제법

  • remainder는 a%b이고, 0일 때 b를 return한다.
  • 그렇지 않으면 gcd를 무한 반복하는데 매개변수로 b와 remainder를 넘긴다.
  • a와 b의 크기 차이는 신경 안 써도 된다. b가 크더라도 결국 첫 바퀴 돌고 a와 b의 위치가 바뀌어 a의 값이 더 커질 수 있다.

대각선 긋고 스쳐지나가는 사각형 개수

가로 + 세로 - (가로 세로의 최대공약수)

  • 걍 외우자....
  • 우리는 남은 멀쩡 사각형을 구해야 하니까 w*h에서 위 공식을 빼주면 된다.
profile
쿼카에요

0개의 댓글