728x90
https://school.programmers.co.kr/learn/courses/30/lessons/140107
참고블로그를 보면 알수있지만
몇자 적어보자면
피타고라스 법칙을 이용해서 풀수있다.
( d^2 = x^2 + y^2 ) 에서 x를 이항하면
( y^2 = d^2 - x^2 )
x를 k 간격으로 돌리면서 모든 x를 다 해보면서 y의 최대값을 구한다.
y의 최댓값에서 k를 나누어 개수를 구한다. 이를 다 더해서 answer을 구해 return 한다.
1 . k의 배수만 가능하므로 for문을 k간격으로 0부터 d까지 돌린다. [ x를 ]
2. 구한 최대의 y 중에서 k의 배수만 답이 될수있으므로 k로 나눈 몫을 구해 answer에 합해준다.
3. answer을 반환한다.
import math
def solution(k, d):
answer = 0
# 0에서 d의 k 배수만큼
for i in range(0,d+1,k) :
# y의 길이를 반환 받음
yMaxDis = yPossiDis(i,d)
# k의 배수의 숫자가 몇개 있는지 확인
answer += yPossiCou(yMaxDis,k)
return answer
# y의 최대 길이를 반환
def yPossiDis(x,d) :
xx,dd = x**2, d**2
return math.sqrt(dd-xx)
def yPossiCou(possible, k) :
y = possible //k
return y +1
참고 블로그 :
https://ksb-dev.tistory.com/254
반응형
'알고리즘 > 프로그래머스문제풀이' 카테고리의 다른 글
[Python/프로그래머스]다시풀어보는_수식최대화_[구현,permutation,re.split] (1) | 2023.10.29 |
---|---|
[Python/프로그래머스]파일명 정렬_구현 (0) | 2022.10.20 |
[Python/프로그래머스]n진수게임_구현 (0) | 2022.10.20 |
[Python/프로그래머스]압축_구현 (0) | 2022.10.20 |
[Python/프로그래머스]방금그곡_구현 (0) | 2022.10.19 |