최대공약수를 활용하여 대각선으로 선이 그어진다면 선에 겹치는 영역을 제외한 나머지 정사각형들의 개수를 구하는 문제이다.
- 첫 시도시 최대공약수가 아닌 w와 h의 크기별로 비교를 하여 해결하려 했는데 44.4에서 정답률이 올라가지 않아 최대공약수를 사용해 해결하였다.
def check(w, h):
# w와 h중 max=a, min=b
a, b = max([w, h]), min([w, h])
while True:
# 최대 공약수 구함
r = a % b
# 최대공약수를 구한다면 return b
if r == 0:
return b
# b에는 현재 r의 결과값이 들어가있으므로 max의 값은 필요없고 b의 min값을 비교해야함
a = b
# r의 현재 값을 b에 넣어줌
b = r
def solution(w,h):
# 사각형의 전체 크기
square = w * h
answer = check(w, h)
# 전체크기 - ((w+h) - 최대공약수)
return square - ((w+h) - answer)
'알고리즘' 카테고리의 다른 글
[백준 1463] 1로 만들기(파이썬) (0) | 2022.01.14 |
---|