코딩하는 해맑은 거북이

[Python] 점 찍기 - 프로그래머스 본문

코딩테스트

[Python] 점 찍기 - 프로그래머스

#CJE 2022. 12. 6.
해당 글은 프로그래머스 문제 '점 찍기'를 다룬다.

문제

https://school.programmers.co.kr/learn/courses/30/lessons/140107

 

프로그래머스

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

programmers.co.kr

 

 

설명

처음에는 2중 for문으로 해결하려했으나, 시간초과로 많은 시간을 쓴 문제이다.

최종적으로는 1개의 for문을 사용해서 해결해야 하는 문제이다.

이는 원점을 중심으로 반지름 d를 가지는 원을 그려보면 이해가 된다.

각각의 x에 대한 y의 최대값을 구하고, x는 k씩 증가하므로 (k로 나눠준 값 + 1)을 하면 정답을 구할 수 있다.

 

 

코드

def solution(k, d):
    answer = 0
    data = [i for i in range(0, d+1, k)]
    for x in data:
        max_y = (d**2-x**2)**0.5
        answer += int(max_y//k)+1
    return answer

 

 

 

 

 

Comments