프로그래머스/LV2
[프로그래머스 Lv2,python] - 멀쩡한 사각형
chyam_eun
2025. 3. 27. 19:26
https://school.programmers.co.kr/learn/courses/30/lessons/62048
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def gcd(a,b): #최대 공약수.유클리드 호제법 사용
if a%b==0:
return b
return gcd(b,a%b)
def solution(w,h):
res = w * h - (w + h - gcd(w, h))
return res
사각형들이 패턴을 가진채 잘려진다.
이것이 4번 반복되는데, 가로의 길이인 8과 세로의 길이인 12의 최대공약수인 4만큼 반복되는것을 알 수 있다.
=> 작은 사각형의 가로 길이를 w', 세로 길이를 h' 라고 할 때 각각 ( w//최대공약수),(h//최대공약수)의 값을 가진다.
이때 직선과 세로의 선이 만나는 갯수는 1개이고, 가로의 선이 만나는 갯수는 2개이다.
=> w'-1 개와 h'-1개 이다.
첫 점을 고려하면 (w'-1) + (h'-1) + 1 = w' + h' - 1 이 나온다.
이것이 최대공약수만큼 반복되므로,
사용하지 않는 사각형은 ( w' + h' - 1 ) * k = w + h - k이 된다.