- 아무리 생각해도 맞는거 같아서 왜 안되나 찾아본 결과 계산 순서에 따라 계산 결과가 다르게 나타날수 있다고 함.. 따라서 나누기를 할 때는 곱이 모두 끝나고 나서 나누어 주어야 함.
- 시간 초과가 나서 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
'알고리즘[Python] > 프로그래머스' 카테고리의 다른 글
[ Lv 2 ] 타겟 넘버 (0) | 2021.06.21 |
---|---|
[ Lv 2 ] 오픈채팅방 (0) | 2021.06.21 |
[Lv 2] 짝지어 제거하기 (0) | 2021.06.20 |
[Lv 2] 124 나라의 숫자 (0) | 2021.06.20 |
[Lv 1] 이상한 문자 만들기 (0) | 2021.06.19 |