https://programmers.co.kr/learn/courses/30/lessons/62048
import math
def solution(w, h):
return w*h-(w+h-math.gcd(w, h))
풀이
1. 전체 사각형 개수(w*h)에서 (w+h-최대공약수)를 리턴
대각 선을 이은 선분이 지나는 사각형들을 위쪽과 오른쪽 끝으로 옮기면 개수가 'w+h-최대공약수'이 된다.
최대 공약수만큼 사각형이 겹치게 되므로 w+h에서 빼준다.
100% 수학문제이다. 고등학생 때 이런 로직을 다루었었던 기억이 있다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv2 - 짝지어 제거하기 (파이썬) (0) | 2022.03.30 |
---|---|
[프로그래머스] Lv2 - 124 나라의 숫자 (파이썬) (0) | 2022.03.30 |
[프로그래머스] Lv2 - 문자열 압축 (파이썬) (0) | 2022.03.29 |
[프로그래머스] Lv1 - 직사각형 별찍기 (파이썬) (0) | 2022.03.27 |
[프로그래머스] Lv1 - x만큼 간격이 있는 n개의 숫자 (파이썬) (0) | 2022.03.27 |