Dauniverse

👩‍💻[ 프로그래머스 | Python ] 점 찍기 본문

코테

👩‍💻[ 프로그래머스 | Python ] 점 찍기

Daunique 2023. 10. 27. 01:49

1. 문제 해석


2. 내 코드

첫 시도 시간 초과
이중 for문을 해소해야 함
import math

def solution(k, d):
    answer = 0
    units = [k * u for u in range(d+1)]
    for u in units:
        for n in units:
            if math.sqrt(u**2 + n**2) <= d:
                answer += 1
    return answer

3. 최종 코드 

더보기
x값에 대한 y값이 최대가 될 때, k의 배수 개수 구하기
import math

def solution(k, d):
    answer = 0
    for x in range(0, d+1, k):   # x도 k의 배수
        y = math.sqrt(d**2 - x**2)
        answer += (y // k) + 1   # 최대 y까지 k의 배수 개수
    return answer

 

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/140107?language=python

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr