백준 & 프로그래머스

프로그래머스.두 원 사이의 정수 쌍.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)