[프로그래머스] 점 찍기(파이썬) - Lv.2

서봉성·2022년 12월 25일
0

코딩테스트

목록 보기
3/27
post-thumbnail

문제

나의 접근법(틀린 풀이)

이중 for문을 사용하여 좌표의 범위를 벗어나는 것들을 찾는 코드를 작성했다. 하지만 시간초과로 틀렸다.

def solution(k, d):
    answer = (d//k+1)*(d//k+1)
    max_d=k*(d//k)
    for i in range(max_d, -1, -k):
        for j in range(max_d, -1, -k):
            if i*i+j*j>d*d:
                answer-=1
            else:
                break
    return answer   

올바른 풀이

x²+y²=d²라는 공식에서 d와 x의 값을 알면 y의 최대값을 알 수 있다.
따라서 for문 하나만으로 풀 수 있다.

def solution(k, d):
    answer = 0
    for x in range(0, d+1, k):
        y=int((d**2 - x**2)**0.5)
        answer+=y//k+1
        
    return answer   
profile
OverStudy

0개의 댓글