반응형
파이썬으로 프로그래머스 쉽게 풀기 :: 두 원 사이의 정수 쌍
https://school.programmers.co.kr/learn/courses/30/lessons/181187#qna
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까지 점의 개수를 확인하여 더해준다.
반응형
'코딩테스트 연습 > 프로그래머스' 카테고리의 다른 글
[Python - 프로그래머스] 혼자서 하는 틱택토 (0) | 2023.07.07 |
---|---|
[Python - 프로그래머스] 달리기 경주 (2) | 2023.06.16 |
[Python - 프로그래머스] 요격시스템 (0) | 2023.06.15 |
[Python - 프로그래머스] 코딩테스트 연습 > 탐욕법(Greedy) > 섬 연결하기 (0) | 2023.01.26 |
[Python - 프로그래머스] 코딩테스트 연습 > 완전탐색 > 모음사전 (2) | 2023.01.26 |