백준 & 프로그래머스
프로그래머스.두 원 사이의 정수 쌍.python
concho
2023. 9. 6. 18:35
https://school.programmers.co.kr/learn/courses/30/lessons/181187
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
요 원에서
1) 1 ~~ r1-1, x에서의 빨강 원의 값을 구하고 소수점을 벼려준다.
2) 이 값은 빨강 원 안의 점 개수이다.
3) 같은 방법으로 검정 원의 점 개수도 구한다.
4) 경계선을 포함해야 함으로 검정 원의 값이 정수일 경우 +1을 해준다.
5) r1 ~~ r2-1 까지도 구해준다.
6) x=0일때는 r2-r1+1 이므로 더해준다.
7) 나온 개수를 모두 더한 후 *4 해준다.
채점을 시작합니다.
정확성 테스트
테스트 1 〉 | 통과 (0.02ms, 10.1MB) |
테스트 2 〉 | 통과 (0.02ms, 10.1MB) |
테스트 3 〉 | 통과 (0.03ms, 10.2MB) |
테스트 4 〉 | 통과 (2.49ms, 10.4MB) |
테스트 5 〉 | 통과 (0.64ms, 10.2MB) |
테스트 6 〉 | 통과 (1.84ms, 10.1MB) |
테스트 7 〉 | 통과 (545.61ms, 35.1MB) |
테스트 8 〉 | 통과 (1015.35ms, 46.1MB) |
테스트 9 〉 | 통과 (533.77ms, 30.8MB) |
테스트 10 〉 | 통과 (689.94ms, 48.5MB) |
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
import math
def solution(r1, r2):
cnt_list = []
for x in range(1,r1):
y2 = int(math.sqrt(r2**2 - x**2))
y1 = math.sqrt(r1**2 - x**2)
if y1.is_integer():
cnt_list.append(int(y2) - int(y1) + 1)
else:
cnt_list.append(int(y2) - int(y1))
for x in range(r1,r2):
cnt_list.append(int(math.sqrt(r2**2 - x**2)))
cnt_list.append(r2-r1+1)
return 4*sum(cnt_list)