알고리즘[Python]/프로그래머스

[Lv 2] 멀쩡한 사각형

병훈1234 2021. 6. 20. 14:29

- 아무리 생각해도 맞는거 같아서 왜 안되나 찾아본 결과 계산 순서에 따라 계산 결과가 다르게 나타날수 있다고 함.. 따라서 나누기를 할 때는 곱이 모두 끝나고 나서 나누어 주어야 함.

- 시간 초과가 나서 w == h일때를 따로 두어서 해결

- w * h - (w + h - gcd(w, h))로 구하면 훨씬 쉽게 풀수 있다는데.. 이해가 잘 안되어서 일단 해결할 수 있는 방법으로 해결함. 

import math

def solution(w,h):
    if w > h:
        w, h = h, w
    answer = w * h
    
    if w == h:
        return w * h - w
    
    for i in range(1, w+1):
        answer -= (math.ceil(h * i / w) - math.floor(h * (i-1) / w))
        
    
        
    return answer

출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges