코딩테스트 연습/프로그래머스

[Python - 프로그래머스] 두 원 사이의 정수 쌍

슈퍼짱짱 2023. 6. 15. 11:16
반응형

파이썬으로 프로그래머스 쉽게 풀기 :: 두 원 사이의 정수 쌍

 

https://school.programmers.co.kr/learn/courses/30/lessons/181187#qna

 

프로그래머스

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

programmers.co.kr

 


Solution

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def sol(r) :
    temp = 1
    minus = 1
    for i in range(1,r) :
        temp_ = (r**2 - i**2)**(1/2)
        if temp_ == int(temp_) :
            minus = minus + 1
        temp += int(temp_)*2 + 1
 
    temp = temp*2
    temp = temp + r*2 + 1
    
    return [temp, minus]
 
def solution(r1, r2):
    temp = sol(r1)
    return sol(r2)[0- temp[0+ temp[1]*4
cs

 

피타고라스의 정리를 활용하여 반지름이 주어졌을 때 원 안에 정수의 (x,y) 쌍의 개수를 찾는다. (function sol)

단순히 r2 안에 점 개수에서 r1 안에 점 개수를 빼주면 안되고,

r1 중에서 원과 점이 정확히 일치하는 점 개수는 더해주어야 한다.

 

예로 r1이 10인 경우 다음과같이 12개의 점이 원과 일치하므로 

r2 안에 점 개수 - r1 안에 점 개수 + r1 중 원과 일치하는 점 개수로 계산해 주어야 한다.

 

 

 


다른 사람의 풀이

 

 

r1 따로, r2 따로 할 필요없이 바로 계산하면 된다.

 

 

1사분면에 대해서만 계산 후 마지막에 4를 곱해준다.

 

첫 번째 for 문에서는 0~r1까지 x축(or y축) 기준으로 하나씩 점의 개수를 확인하여 더해주고,

두 번째 for 문에서는 r1~r2까지 점의 개수를 확인하여 더해준다.

 

 

반응형