알고리즘[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