[Programmers] 두 원 사이의 정수 쌍 / Python, 파이썬 / 181187
2023. 4. 24. 22:30ㆍProgrammers/Lv.2
728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/181187?language=python3
문제 설명
더보기
제한 사항
입출력 예r1r2result
입출력 예 설명
문제 설명
x축과 y축으로 이루어진 2차원 직교 좌표계에 중심이 원점인 서로 다른 크기의 원이 두 개 주어집니다. 반지름을 나타내는 두 정수 r1, r2가 매개변수로 주어질 때, 두 원 사이의 공간에 x좌표와 y좌표가 모두 정수인 점의 개수를 return하도록 solution 함수를 완성해주세요.
※ 각 원 위의 점도 포함하여 셉니다.
제한 사항
- 1 ≤ r1 < r2 ≤ 1,000,000
입출력 예r1r2result
2 | 3 | 20 |
입출력 예 설명
그림과 같이 정수 쌍으로 이루어진 점은 총 20개 입니다.
문제 풀이
def solution(r1, r2):
# 1사분면에 있는 점의 갯수를 구하고 *4를 하는 방법
answer = 0
min_y, max_y = r1, r2
for i in range(0, r2):
# max_y를 줄여가며 범위를 줄인다
while r2 ** 2 < max_y ** 2 + i ** 2:
max_y -= 1
# min_y를 줄여가며 범위를 줄인다
# x축위에 있는 값들을 포함하게 되면 중복이 되기 때문에 제외
while min_y - 1 and r1 ** 2 <= (min_y - 1) ** 2 + i ** 2:
min_y -= 1
# 범위 사이에 있는 점들 더하기
answer += max_y - min_y + 1
# 총 4사분면 까지니깐 4를 곱해줌
return answer * 4
728x90
반응형
'Programmers > Lv.2' 카테고리의 다른 글
[Programmers] 과제 진행하기 / Python, 파이썬 / 176962 (1) | 2023.04.25 |
---|---|
[Programmers] 연속된 부분 수열의 합 / Python, 파이썬 / 178870 (0) | 2023.04.24 |
[Programmers] 요격 시스템 / Python, 파이썬 / 181188 (0) | 2023.04.24 |
[Programmers] 숫자 변환하기 / Python, 파이썬 / 154538 (0) | 2023.02.22 |
[Programmers] 뒤에 있는 큰 수 찾기 / Python, 파이썬 / 154539 (0) | 2023.02.20 |