본문 바로가기
Algorithm/Programmers

[프로그래머스] 파이썬 - 점찍기

by chobbo 2024. 10. 3.

문제

풀이

처음 작성한 코드

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