문제
풀이
처음 작성한 코드
def solution(k, d):
answer = 0
for i in range(0,d+1,k) :
for j in range(0,d+1,k):
if (i**2 + j**2) <= d**2:
answer += 1
return answer
문제 조건을 그대로 입력했다.
k와 d의 제한사항이 각각 최대 백만이기 때문에, 이중 for문을 사용하면 안되는 문제였다.
따라서 아래 공식을 이용하여 j의 값을 구해주었다.
피타고라스 정리에 의해 i² + j² = d² 이므로 (i는 x축, j는 y축, d는 최대 길이이다)
j² = d² - i² 이다.
이 공식으로 j를 구한 후 j를 k로 나눈 정수 몫 + 1이 해당 i값이 x값일 때의 j값의 개수이다.
정답 코드
def solution(k, d):
answer = 0
for i in range(0,d+1,k) :
j = int( (d**2-i**2)**0.5)
answer += (j//k +1)
return answer
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 파이썬 - 스킬트리 (2) | 2024.10.09 |
---|---|
[프로그래머스] 파이썬 - 모음사전 (0) | 2024.10.07 |
[프로그래머스] 파이썬 - 이모티콘 할인 행사 (2) | 2024.10.01 |
[프로그래머스] 72411 파이썬 - 메뉴 리뉴얼 (0) | 2024.09.24 |
[프로그래머스] 340212 파이썬 - 퍼즐 게임 챌린지 (1) | 2024.09.24 |