HTTP 200 OK

Memento mori & Carpe diem

알고리즘

멀쩡한사각형-프로그래머스

sjoongh 2022. 1. 9. 19:26
 
최대공약수를 활용하여 대각선으로 선이 그어진다면 선에 겹치는 영역을 제외한 나머지 정사각형들의 개수를 구하는 문제이다.
- 첫 시도시 최대공약수가 아닌 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